آموزش های وردپرس

آموزش رفع خطای add expires headers در GTmetrix

بعد از آپلود اطلاعات سایت روی هاست و گذر زمان، یکی از خطاهای بسیار رایجی که در هنگام تست سرعت سایت توسط GTmetrix باهاش مواجه می شیم، ارور add expires headers هست. همونطور که از معنای لغوی این خطا مشخص هست اینه که به ما میگه برای برخی فایل‌ها که عموما در هدر سایت هستند، باید کاری کنیم که تاریخ منقضی شدنشون طولانی مدت باشه که در اینجا منظور از این تاریخ همون کش سایت هست. وقتی شما وارد یک سایت می شید، فایل هایی با فرمت های مختلف شروع به دانلود شدن می‌کنند، هر کدوم از این فایل‌ها دارای یک تاریخ انقضا هستند و تا مدت زمان مشخصی در حافظه مرورگر شما باقی میمونند تا در بازدیدهای بعدی به جای لود از سرور، از مرورگر شما شروع به لود شدن بکنند.

در این آموزش از پایگاه دانش میزبان‌فا قصد دارم به نحوه برطرف کردن ارور add expires headers در جی تی متریکس بپردازم که با استفاده از این قابلیت می تونید کاری کنید که فایل هایی که بیشتر از چند سال ممکنه تغییر نکنند، تا این مدت در حافظه مرورگر کاربر باقی بمونن. در این صورت تعداد درخواست HTTP هم به سرور شما کمتر شده و باعث افزایش سرعت سایت خواهد شد.

برخی کاربران اعلانی تحت عنوان There is * static component without a far-future expiration date. مشاهده می کنند. این اعلان به منقضی شدن دو فایل در هدر اشاره می کند زیرا همان طور که قبلا هم ذکر شد  هر مورد تاریخ انقضای مشخصی برای باقی ماندن در  حافظه کش دارد. اما راه حل چیست؟

چون این تاریخ منقضی شده هیچ راه کاری نداریم جز اینکه تاریخ ها را تغییر دهیم. مرورگر دوباره درخواستی به سمت سرور مبنی بر خواندن اطلاعات ارسال می کند. این فایل های در حافظه آپدیت و تاریخ جدیدی به عنوان تاریخ انقضا دریافت خواهند کرد. تا تاریخ مذکور فایل ها و اطلاعات در حافظه باقی مانده و مشکل رفع خواهد شد. برای این مورد هم به روشی که در ادامه اشاره می شود عمل می کنیم. برای دریافت اطلاعات بیشتر در خصوص حافظه کش آموزش زیر را مطالعه کنید.

کش چیست؟ چند نوع کش داریم؟

آموزش رفع خطای add expires headers در GTmetrix

وقتی که قصد دارید مشکل add expires headers رو در جی تی متریکس برطرف کنید، باید بدونید که هر کدوم از فایل‌ها بر اساس استفاده‌ای که دارند، باید از یک بازه زمانی درست برای موندن در حافظه کش انتخاب بشن. چیزی که تعیین کننده این کار هست بر اساس فرمت فایل صورت می گیره. که اگه بخوایم تو یک دسته بندی درست قرارشون بدیم شاید استفاده از روش زیر چیز درستی برای عموم سایت‌ها باشه.

  • فایل های تصویری با فرمت jpg, gif, png
  • فایل تصویری با فرمت ico (فاوآیکون سایت)
  • فایل های CSS
  • فایل های جاوا اسکریپت

تو دسته بندی بالا که بر اساس فرمت فایل مشخص شده، معمولا فاوآیکون سایت خیلی تغییر نمی کنه. بعد از اون هم فایل های CSS و JS هستند که وابسته به تغییرات توسط خود ما هستند. بنابراین میشه برای فایل هایی که ممکنه حتی تا سال ها تغییری نکنند، کاری کنیم که تا این مدت در حافظه کش مرورگر باقی مونده و در بازدیدهای بعدی کاربر به جای لود از طریق هاست و سرور، از حافظه کش شده بارگزاری بشن. در این صورت با کاهش تعداد درخواست HTTP مواجه خواهیم شد. حالا اگه ما بخواهیم تا تاریخ انقضا برای بررسی مجدد فایل‌ها و آپدیت در حافظه کش استفاده کنیم باید از قابلیت Enable Expirations توسط فایل htaccess. استفاده کنیم.

There is * static component without a far-future expiration date.

برای این منظور وارد هاست خودتون شده و بعد از اینکه وارد File Manager شدید، به دنبال فایل htaccess. بگردید. این فایل جزء فایل‌ها مخفی هست. پس اگر اونو نمی بینید روی دکمه Settings که در بالای صفحه فایل منیجر قرار داره کلیک کنید و سپس در پنجره باز شده مثل تصویر زیر گزینه Show Hidden Files رو فعال کنید.

🟢🔵 اگر به هر دلیلی موفق به یافتن فایل htaccess. نشدید از اموزش زیر برای یافتن فایل های مخفی هاست کمک بگیرید.

مشاهده فایل های مخفی در سی پنل

There is * static component without a far-future expiration date.

در نهایت بعد از اینکه فایل بهتون نمایش داده شد، روی اون راست کلیک کرده و گزینه Edit را برای ویرایش کردن انتخاب کنید، سپس کدهای زیر را در انتهای فایل قرار بدین.

# Enable expirations
ExpiresActive On 
# Default directive
ExpiresDefault "access plus 3 month"
  • در کدهای بالا ما این دستور رو توسط htaccess. صادر کردیم که اولا قابلیت expirations فعال بشه که در خط دوم با قرار گرفتن روی حالت ON این کار صورت میگیره.
  • سپس در خط آخر که با ExpiresDefault “access plus 3 month” مشخص شده این دستور رو میدیم که به صورت پیش فرض(Default directive) برای 3 ماه این فایل‌ها در حافظه کش باقی بمونن. در هر بازدید از طریق حافظه مرورگر لود بشن.
  • بعد از اینکه سه ماه تموم شد مجددا از طریق هاست یک بار درخواست بشن و باز هم برای مدت سه ماه دیگه (اینبار در حالتی که آپدیت شده) در حافظه کش قرار بگیرند.

اما هنوز مشخص نکردیم که این فایل ها شامل چه چیزهایی هستند. در اینجا مثال رو با فایل فاو آیکون شروع می کنیم. برای اینکه فایل فاو آیکون در سایت رو برای این مدت سه ماه در حافظه کش قرار بدین و قابلیت add expires headers رو براش فعال کنید، باید بعد از اینکه از کدهای بالا استفاده کردید، ادامه کدها که مربوط به این فرمت فایل هست رو به شکل زیر وارد کنید.

# Enable expirations
ExpiresActive On 
# Default directive
ExpiresDefault "access plus 3 month"
# My favicon
ExpiresByType image/x-icon "access plus 1 year"

تو خط آخر این کد این دستور برای فایل های تصویری که به صورت فاوآیکون هستند تعیین شده که به مدت یک سال در حافظه کش قرار بگیرند. به همین ترتیب برای سایر فایل‌ها هم باید به این شیوه عمل کنیم.

<IfModule mod_expires.c>
# 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>

در نمونه کد بالا که به صورت کد نهایی هست و در ابتدا و انتهای اون از دستور IfModule استفاده شده که برای حالت عملی و فعال کردن قابلیت add expires headers باید به شکل بالا عمل کنیم، امکان اجازه به فایل های تصویری با فرمت gif، png، jpg و jpeg به مدت یک ماه، فایل های CSS به مدت دو ماه و فایل های JS هم به مدت یک سال تعیین شدند که در حافظه کش مرورگر باقی بمونند.

امیدوارم که این آموزش هم مورد توجه و پسند شما قرار گرفته باشه و با استفاده ازش تونسته باشید اقدام به رفع خطای add expires headers در جی تی متریکس بکنید. در صورتی که در رابطه با این آموزش سوال یا مشکلی داشتید در بخش دیدگاه‌ها اعلام کنید.

آموزش رایگان کار با تمام بخش های gtmetrix

3.7/5 - (37 امتیاز)

علی یزدان پرست

حدود 8 سالی هست که در زمینه میزبانی وب به صورت تخصصی فعالیت می کند و علاقه زیادی به کسب تجربه در زمینه بازاریابی اینترنتی و تجارت الکترونیک دارد، علی یک کارآفرین خستگی ناپذیر است و با انرژی حیرت انگیزی تمام قسمت های میزبان فا را توسعه می دهد، علی به سبک حرفه ای و انحصاری خود زندگی می کند و خط فکری خاصی را همیشه دنبال می کند، او رفتار هایی کاملا متفاوت نسبت به سایر مدیرانی که تا به حال دیده اید دارد...

‫۲۸ دیدگاه ها

  1. سلام و وقت بخیر خدمت شما؛
    ببخشید من یک سوال داشتم. وب سایت من با اینکه بهینه شده و pagespeed 84 رو دارد ولی مدت زمان بارگذاری سایتم خیلی بالاس!
    بعضی وقتا 12 ثانیه و وقتای دیگه هم 40 ثانیه !!!!!
    این مشکل از وقتی به وجود اومده که من هاستمو از فرانسه به ایران اوردم!
    هر ترفندی که برای افزایش سرعت پیدا کردم رو پیدا سازی میکنم ولی کماکان تایم لود شدن کامل وبسایتم خیلی بالاس؟؟
    مشکل از چی میتونه باشه؟
    با تشکر

  2. سلام
    وقتتون بخیر و شادی من کد دستوری بالا رو درون سایتم بخش htaccess قرار دادم اما همچنان زیر رو در سایت gtmtix دارم.

    There are 3 static components without a far-future expiration date.

    https://fonts.googleapis.com/css?family=Varela+Round&ver=3.1
    https://www.google-analytics.com/analytics.js
    https://www.google-analytics.com/plugins/ua/linkid.js

    دقیقا فایل رو باید کجای فایل htaccess قرار بدیم تا عمل کنه و آیا کد بالا کامل هست ؟

  3. سلام. وقت بخیر. متشکر از آموزشهاتون.
    add expires headers در سایت تعداد 30 تا شامل عکس و فرمت های مختلف رو با این اخطار نشون میده. افزونه wp rockrt یک قسمت داره در قوانین پیشرفته به نام “آدرس‌هایی که هرگز کش نخواهند شد”. کافیه هرچی تو gtmetrix میبینیم رو اینجا وارد کنیم؟ متاسفانه تجربه ناخوشایندی در دست زدن به کدهای htaccess دارم.
    پیشاپیش از پاسخ شما متشکرم

  4. درود
    از توضیحاتتون در مورد رفع خطای Add Expires headers استفاده کردم و در یک دامنه اعمال شد مورد هم بر طرف شد ، در دامنه ی دوم هم مطابق بار اول انجام شد اما کماکان این خطا در gt metrix نمایش داده میشه

  5. سلام ، وقت بخیر

    آیا این حالت شامل فایل گوگل آنالیتیکس هم میشه ؟
    من وقتی چک میکنم ، به فایل هایی که از سرور دیگه ( مثلا گوگل ) ضمیمه میشه ، گیر میده و میگه اینها از Add Expires headers استفاده نکردن !

    مشکل چیه و چطور میشه حلش کرد ؟
    متشکرم .

  6. سلام و تشکر از مطالب ارزشمندتون،
    آیا ممکنه که هاست پروایدر از سمت سرور کد مربوط به Add Expires headers و کلا دسترسی به هدرها رو محدود کرده باشه؟
    چون این دستور جواب نمیده !!!!

  7. من این کدها توی HTACCESS ام هست. افزونه راکت دارم. اما توی جی تی متریکس خطاشو بهم نشون میده.

  8. سلام و عرض ادب.
    من کد بالا رو به انتهای فایل اضافه کردم.
    ولی بازم خطا در gtmetrix میده.
    یه بار هم به ابتدای فایل اضافه کردم بازم تاثیری نداشت.
    ممنون میشم راهنمایی بفرمایید.

  9. سلام…
    متاسفانه من از کد شما استفاده کردم و از اون لحظه به بعد همه چی توی مرورگر های خود جی تی متریکس کش شده. کل سایتم که نابود کنم جی تی متریکس داره یه نتیجه رو بهم نشون میده. چیکار کنم؟؟؟

  10. سلام این کد ها رو اضافه کردم اما هیچ تغییری نکرد باید چکار کنم؟
    ضمنا بنده از پلاگین rocket استفاده میکنم.

  11. با سلام میخوام بدونم این تیکه کد ها که میگین بزاریم تداخلی با افزونه هایی مثل راکت انجام نمیده و اساسا چه چیزی اضافه تر ازاونا رو داره ؟
    عملا مثل تنظمیات کش این افزونه میمونه

  12. سلام. خیلی ممنون از آموزش مفیدتون. برای سایت من در خصوص این معیار پیغام زیر رو نشون میده. می شه راهنمایی بفرمایید چه کاری باید براش انجام بشه؟

    There are 2 static components without a far-future expiration date.

    1. سلم و احترام؛
      این اعلان به منقضی شدن دو فایل در هدر اشاره میکنه. (چون هر مورد تاریخ انقضای مشخصی داره تا در حافظه کش باقی بمونه) خب حالا چون این تاریخ منقضی شده هیچ راه کاری نداریم جز اینکه تاریخ ها رو تغییر بدیم! مرورگر دوباره درخواستی رو به سرور برای خوندن فایل‌ها ارسال میکنه که فایل‌ها رو در حافظه خودش آپدیت بکنه و این بار هم یک تاریخ انقضایی رو از سرور دریافت میکنه که تا اون موقع فایل‌ها رو به صورت کش شده تو حافظه خودش داشته باشه. 😊 در این اموزش زیر می تونید کدهای مربوطه برای حل مشکلتون رو دریافت کنید.
      کش چیست؟

  13. سلام من از این کداها استفاده کردم ولی سایتم بالا نمیاد. چطوری درست میشه.؟؟؟؟؟؟؟/
    لطفا قبل از اینکه اموزش یه مطلبو بزراین خودتون اول امتحانش کنین ببیننین کار میکنه یا ن.
    لطفا راهنمایی کنید من چطوری سایتمو درست کنم؟

    1. سلام و احترام؛
      آموزش ها تست شده هستن و مرحله به مرحله بعد از پیاده سازی ازشون تصویر گرفته میشه.

  14. سلام برای رفع این مورد چیکار باید انجام بدم ؟

    There is 1 static component without a far-future expiration date.

    1. سلام و احترام؛
      مقاله آپدیت و نحوه رفع این مورد هم اضافه شد. 😊

  15. سلام وقت بخیر

    اگر میشه تیکه کدی که برای فونت ها استفاده میشه رو هم اضافه کنید ممنون

    1. سلام و احترام؛
      برای موارد زیر این مشکل وجود داره:
      فایل های تصویری با فرمت jpg, gif, png
      فایل تصویری با فرمت ico (فاوآیکون سایت)
      فایل های CSS
      فایل های جاوا اسکریپت

      اعلانی که دریافت میکنید رو دقیقا کپی کنید و بفرستید کد مربوط بهش رو در اپدیت مقاله اضافه میکنیم.

  16. سلام. هنوز هم خطایی مانند تصویری که قرار دادید دارم. که برای گوگل آنالیتیک و تگ منیجر هست. به چه صورت اون رو برطرف کنم ؟

  17. سلام خسته نباشید
    عذر میخوام من از هاست ووکامرس استفاده میکنم که دایرکت ادمین هست و فایل htacssec نداره بنده باید چیکار کنم؟

  18. من میخوام قالب فروشگاهی راه اندازی کنم
    از این قالب رو هم بخرم
    شما پیشنهاد میکنین از کدوم یکی از سرویس هاتون استفاده کنم؟
    هاست وردپرس
    یا هاست معمولی

    1. سلام و احترام؛
      جناب اکبرزاده قالبی که انتخاب کردید کمی سنگین هست و پیشنهاد میکنم هاستی با منابع مطلوب یا متوسط رو به بالا تهیه کنید. در این خصوص با شماره 02191001379 داخلی 1 تماس بگیرید تا راهنماییتون کنن که چه هاستی با چه میزان منابع پاسخگو هست.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *