اگر از همراهان همیشگی پرشین تولز هستید، حتماً مقاله قبلی در مورد رفع خطاهای سایت به کمک GTmetrix را خواندهاید! در این مقاله هم قصد داریم به بررسی ادامه این بحث بپردازیم تا بتوانید با افزایش سرعت سایت، وضعیت سئوی سایت خود را بهبود ببخشید و رضایت کاربران را هم جلب کنید.
در مقاله قبل گفتیم وقتی که قصد دارید مشکل add expires headers را در جی تی متریکس برطرف کنید، باید بدانید که هر کدوم از فایلها بر اساس استفادهای که دارند، باید از یک بازه زمانی درست برای ماندن در حافظه کش انتخاب شوند.
- فایلهای تصویری با فرمت jpg, gif, png
- فایل تصویری با فرمت ico(فاو آیکون سایت)
- فایلهای CSS
- فایلهای جاوا اسکریپت
در دسته بندی بالا که بر اساس فرمت فایل مشخص شده، معمولا فاوآیکون سایت تغییر نمیکند. بعد از آن هم فایلهای CSS و JS هستند که وابسته به تغییرات توسط خود ما هستند. بنابراین میشود برای فایلهایی که ممکن است حتی تا سالها تغییری نکنند، کاری کنیم که تا این مدت در حافظه کش مرورگر باقی مونده و در بازدیدهای بعدی کاربر به جای لود از طریق هاست و سرور، از حافظه کش شده بارگذاری شوند. در این صورت با کاهش تعداد درخواست HTTP مواجه خواهیم شد. حالا اگر ما بخواهیم تا تاریخ انقضا برای بررسی مجدد فایلها و آپدیت در حافظه کش استفاده کنیم باید از قابلیت Enable Expirations توسط فایل htaccess. استفاده کنیم.
برای این منظور وارد هاست خودتان شده و بعد از آن که وارد File Manager شدید، به دنبال فایل htaccess. بگردید. این فایل جزو فایلها مخفی است! پس اگر آن را نمی بینید روی دکمه Settings که در بالای صفحه فایل منیجر قرار دارد، کلیک کنید و سپس در پنجره باز شده مثل تصویر زیر گزینه Show Hidden Files را فعال کنید.
در نهایت بعد از آن که فایل به شما نمایش داده شد، روی آن راست کلیک کرده و گزینه Edit را برای ویرایش کردن انتخاب کنید، سپس کدهای زیر را در انتهای فایل قرار دهید.
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 3 month"
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 3 month"
در کدهای بالا ما این دستور را توسط htaccess. انجام دادیم که اولاً قابلیت expirations فعال شود که در خط دوم با قرار گرفتن روی حالت ON این کار صورت میگیرد. سپس در خط آخر که با ExpiresDefault “access plus 3 month” مشخص شده این دستور را میدهیم که به صورت پیش فرض (Default directive) برای ۳ ماه این فایلها در حافظه کش باقی بمانند و در هر بازدید از طریق حافظه مرورگر لود شوند. بعد از آن که سه ماه تموم شد، مجدداً از طریق هاست یک بار درخواست می شود و باز هم برای مدت سه ماه دیگر در حافظه کش قرار بگیرند. اما هنوز مشخص نکردیم که این فایلها شامل چه چیزهایی هستند.
در اینجا مثال رو با فایل فاوآیکون شروع میکنم. برای آن که فایل فاوآیکون در سایت را برای این مدت سه ماه در حافظه کش قرار دهید و قابلیت add expires headers را برای آن فعال کنید، باید بعد از آن که از کدهای بالا استفاده کردید، ادامه کدها که مربوط به این فرمت فایل است را به شکل زیر وارد کنید.
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 3 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 3 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
در خط آخر این کد این دستور برای فایلهای تصویری که به صورت فاوآیکون هستند تعیین شده که به مدت یک سال در حافظه کش قرار بگیرند. به همین ترتیب برای سایر فایلها هم باید به این شیوه عمل میکنیم:
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 3 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 2 month"
# Javascript
ExpiresByType application/javascript "access plus 1 year"
# Enable expirations
ExpiresActive On
# Default directive
ExpiresDefault "access plus 3 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"
# Images
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
# CSS
ExpiresByType text/css "access plus 2 month"
# Javascript
ExpiresByType application/javascript "access plus 1 year"
در نمونه کد بالا که به صورت کد نهایی است و در ابتدا و انتهای آن از دستور IfModule استفاده شده که برای حالت عملی و فعال کردن قابلیت add expires headers باید به شکل بالا عمل کنیم، امکان اجازه به فایلهای تصویری با فرمت gif، png، jpg و jpeg به مدت یک ماه، فایلهای CSS به مدت دو ماه و فایلهای JS هم به مدت یک سال تعیین شدند که در حافظه کش مرورگر باقی میمانند.
رفع خطای Make fewer HTTP requests در GTmetrix
یکی از خطاهایی که موقع تست سرعت سایت با GTmetrix باهاش مواجه میشویم، خطای Make fewer HTTP requests در Yslow جی تی متریکس است که مربوط به بالا بودن تعداد درخواستهای HTTP است. همانطور که از معنای لغوی این خطا مشخص است، اگر با این خطا مواجه شدید به این معنی است که تعداد درخواست برای لود فایلهای مختلف مثل png.، css.، js و… که در سایت استفاده میکنید، زیاد است. هر فایلی که در هر صفحه استفاده میکنید برابر با یک درخواست است که برای لود آن به سرور ارسال میشود و اگر این تعداد درخواستها در حد معمولی نباشند و به تعداد زیاد از سرور درخواست شود، باعث میشود که در تعداد بازدید بالای سایت به مشکل بخورید و با کندی سرعت مواجه شوید. در مقاله بعدی به بررسی بیشتر این موضوع میپردازیم!