در ادامه مقاله درباره خطای Add Expire headers صحبت خواهیم کرد و بررسی میکنیم که چگونه رفع این مشکل کمک به بالا بردن سرعت سایت ما میکند.
خلاصهای از خطا Add Expires headers
نام: Add Expires headers
نوع: سرور
اولویت: بالا
میزان سختی: راحت
میانگین امتیاز: 25%
Expires headers چیست؟
هر بار که شما از وب سایتی بازدیدی انجام میدهید لازم است که یک سری فایلهایی را دانلود کنید تا سایت قابل مشاهده باشد فایلهایی مانند، CSS، JS، HTML و عکسها که در کش مرورگر (یا کش محلی یا کش لوکال) ذخیره میشود. حال وقتی به صفحهی دیگری از آن سایت مراجعه میکنید موارد تکراری صفحات مثل لوگو سایت فایلهای CSS و غیره دیگر دوباره دانلود نمیشوند بلکه از طریق کش محلی مرورگر فراخوانی صورت میگیرد. پس به این ترتیب لازم نیست با هر بار لود کردن صفحههای سایت، فایلهای مشترک بین صفحات را دانلود کنید. این همان دلیلی است که باعث میشود در اولین بازدید از یک سایت زمان بیشتری برای لود شدن لازم باشد تا زمان لود صفحات در تکرار بازدید از همان سایت.
این عمل هم باعث صرفهجویی در حجم اینترنت بازدیدکننده میشود و هم تعداد درخواستهای سمت سرور را کاهش میدهد و صفحات سایت در دفعات بعدی سریعتر لود میشوند. حال نکته اینجا است که چه مدت باید اطلاعات در کش مرورگر بماند؟ باید تاریخ انقضایی برای فایلها مشخص شود و اگر تاریخ انقضا برای اطلاعات درج نشود هر بار کاربر باید فایلهای مشترک بین صفحات را دانلود کند و آن موقع خطای Expires headers رخ میدهد. تاریخ انقضا به مرورگرها خاطرنشان میکند که کدام فایل را از سرور درخواست کند و کدام فایل را از کش مرورگر درخواست کند.
رفع خطای Expires headers چگونه است؟
در ابتدا شما باید بازه تغییرات هر کدام از فایلهای خود را بدانید به این معنا که این نوع فایلها در سایت شما هر از چندگاهی بهروز رسانی میشود و کدام یک از نوع فایلها تغییراتی پیدا نمیکنند. در پایین لیستی از انواع فایلها درج شده:
- images: jpg, gif, png
- favicon/ico
- javascript
- css
معمولا favicon ها در سایت تغییر نمیکنند و فایلهای عکس هم به ندرت تغییر میکنند و از طرفی گاهی فایلهای جاوااسکریپت تغییر میکنند ولی ممکن است فایلهای CSS تغییرات بیشتری داشته باشند و بر اساس همین موضوع ما تاریخ انقضای این فایلها را مشخص میکنیم تا باعث برطرف شدن مشکل Expires headers شود.
به کد زیر توجه کنید:
# Enable expirations ExpiresActive On # Default directive ExpiresDefault "access plus 1 month"
تاریخ انقصا با دستور ExpiresActive On
نیزفعال میشود همانطور که در خط ۱ توضیح داده شده است.
دستور بالا خط ۴ یک مقدار پیشفرض بر روی فایلهایی که تاریخ انقضا برای آنها تعیین نشده است قرار دادهایم و این فایلها اجازه دارند به مدت ۱ ماه در کش مرورگر کاربر ذخیره شوند و بعد از یک ماه مرورگر دوباره درخواست چنین فایلهایی را میدهد، خط ۳ توضیحات دستور خط ۴ است.
به ادامه کد توجه کنید:
# 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 1 month" # Javascript ExpiresByType application/javascript "access plus 1 year"
دستور خط ۲ برای favicon است که به مدت یک سال میتواند در کش مرورگر ذخیره شود چرا که حتی بعد از سالها ممکن است favicon یک سایت تغییر نکند.
دستورات خط ۴ تا ۷ مربوط به کش انواع عکسها میباشد که هر کدام از عکسها از هر نوعی به مدت ۱ ماه میتوانند در کش کاربر ذحیره شوند.
دستور خط ۹ و ۱۱ به ترتیب برای فایلهای CSS و JS است و به مدت یک ماه در مرورگر کاربر ذخیره میشود.
دستورنهایی Expires headers:
<IfModule mod_expires.c> # Enable expirations ExpiresActive On # Default directive ExpiresDefault "access plus 1 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 1 month" # Javascript ExpiresByType application/javascript "access plus 1 year" </IfModule>
دستور بالا باید در فایل htaccess قرار گیرد و برای پیدا کردن این فایل اصولا باید به مسیر public_html هاست خود رجوع کنید، اگر چنین فایلی را نداشتید ممکن است مخفی باشد و برای همین در تظیمات کنترل پنل خود فایلهای مخفی را show کنید و اگر باز چنین فایلی نبود کافی است New file را بزنید و نام .htaccess را درج نمایید تا ساخته شود، سپس دستور بالا را درج نمایید تا تغییرات لازم در کش صورت بگیرد.
توجه داشته باشید که برای رفع خطای Add Expires headers به شکل کامل، باید تمام فایلهای فراخوانی شده در هاست شما باشد، مثلا اگر عکسی یا فایلی را از سایت دیگر لود میکنید شما نمیتوانید برای آن فایل Expires headers تعریف کنید.
مطلب قبلی : رفع خطای Avoid AlphaImageLoader filter در YSlow جی تی متریکس