سرفصلهای پست
آموزش افزایش سرعت سایت با GTmetrix – رفع خطاهای YSlow
درود بر شما دوستان عزیز، در ادامه آموزش gtmetrix از مقالات سئو سایت میزفا در خدمت شما هستیم. در جلسات گذشته تمام خطاهای مربوط به PageSpeed گوگل را بررسی کردیم و از این مقاله آموزشی به بعد درباره خطاهای موجود در بخش YSlow صحبت خواهیم کرد. اولین ارور موجود در این بخش خطای 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 تعریف کنید.
[box type=”info”]برای کسب اطلاعات بیشتر و نحوه کش کردن فایلها در انواع وب سرورها و سیستم مدیریت محتواهای دیگر نظیر وردپرس و جوملا میتوانید به مقاله جامع رفع خطای ٰLeverage browser caching رجوع کنید چرا که خطای لینک شده ارور Add Expires headers هم رفع خواهد شد.
[/box]حل مشکل Add Expires headers هم نسبتا ساده است و امیدواریم در این آموزش سئو که باعث بالا رفتن سرعت سایت و افزایش رتبه سایت در گوگل میشود، کمک شایانی کرده باشیم، اگر سوالی داشتید حتما در نظرات بپرسید. این جلسه از دوره آموزش جامع جی تی متریکس که مربوط به رفع ارور Add Expires headers بود، هم به پایان رسید در جلسه بعد به معرفی خطای Avoid AlphaImageLoader filter میپردازیم. با ما میزفا همراه باشید.
68 پاسخ
سلام خدمت شما
با تشکر از آموزش های کاربردی خیلی خوبی که می گذارید.
من با این ارور در مورد تاریخ انقضا مواجه شدم و کدهایی که گفتید رو داخل فایل .htaccess قرا دادم اما هنوز gtmetrix قرمز نشون میده و این اخطار رو میده:
There are 6 static components without a far-future expiration date.
سلام مانی
حتما مربوط به سایت شما نیست. درواقع ادرس اون ۶ تا به احتمال زیاد برای گوگل یا سایر سایت ها هست و نمیتونی کاری کنی. بودنشون هم ضروری هست
درود
ممنون بابت آموزش عالی
من از افزونه WP Rocket استفاده میکنم ، تویه gtmetrix.com متوجه شدم Leverage browser caching ارور دارم که تویه فایل .htaccess این پسوند هم تعریف شده اما کار نمیکنه !
امکانش هست کدی رو به .htaccess اضافه کنم تا این ارور هم حل بشه ؟
عکس پیوست شد :
http://uupload.ir/files/aj3e_2020-05-05_222234.png
سلام عبدالصمد.
کار میکنه ولی این عکسی که فرستادی مربوط به svg هست و فرمت های svg چون داخل html لود میشن کش نمیشن. شایدم کش بشن و من بلد نباشیم ولی تا جایی که میدونم کش نمیشه.
سلام و درود
1- آیا با وجود افزونه هایی مثل wp rocket باز هم نیاز به درج این کد ها هست؟
2- اگر عکس ها عوض بشن قبل از یک ماه بازهم همون عکس های قبلی لود میشن یا نه؟
3- پاک کردن کش راکت باعث حذف کش این کد هم میشه؟
4- یه جوری آموزش رو تنظیم میکنید که خودمون هم بتونیم بنویسیم بر حسب هفته و ساعت و….
سلام عباس.
۱ – نه نیاز نیست
۲ – ادرس عکس های جدید اگر فرق کنه دیگه مشکلی نیست و عکس جدید لود میشه. ادرس عکس ها نباید یکی باشه.
۳ – بستگی به سیستم کاربر داره هم اره هم نه
۴ – من درباره کدهای داخل توضیح دادم اگر مطالعه کنی میتونی انجام بدی. تو مقاله رفع خطای leverage caching هم باز بیشتر صحبت شده.
موفق باشی
هوالرزاق
با سلام و احترام
این کدها که شما لطف نمودید و قرار دادید برای هاست لینوکس میباشد برای کسانی که از هاست ویندوز استفاده میکنند و زبان برنامه نویسی سایت Asp.Net و #C میباشد در فایل web.config خود معادل این دستورات که در بالا قرار دادید و هم بگید برای هاست ویندوز
ممنون موفق باشید
سلام. مقاله leverage browser caching آپدیت کردیم و درباره ویندوز و asp نوشتیم. بخونش.
اصولا وقتی leverage رفع کنی خطای expires header هم اوکی میشه.
تشکر از آموزش خوبتان مشکل من حل شد موفق باشید
سلام. خواهش میکنم. موفق باشید.
سلام خسته نباشید من کدهای زیر رو تو سیاتم دارم ممنون میشم برای رفع مشکل بگین چیکار کنم
There are 3 static components without a far-future expiration date.
https://mizfa.com/blog/wp-content/litespeed/localres/aHR0cHM6Ly93d3cuZ29vZ2xldGFnbWFuYWdlci5jb20vZ3RhZy9qcw==?id=UA-151261026-1
https://logo.samandehi.ir/logo.aspx?id=162494&p=nbpdwlbqodrfshwlbsiyshwl
https://mizfa.com/blog/wp-content/litespeed/localres/aHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpz
سلام وقت بخیر
شما اگر مقاله رو مطالعه کنید متوجه این موضوع میشید. همینطور شاید ۱۰ باری در نظرات به این موضوع اشاره کردم.
موفق باشید.
سلام کامنت هارو حوندم الان تو به من خطای Add Expires headers میده ولی لینک ها بیرونی هستند هیچ راهی نداره برطرف بشه ؟ امتیاز و خیلی پایین اورده
سلام سامان.
نه دیگه. میتونی توی تماس با ما و یا یک صفحه درست کنی به نام مجوزها و اونجا اینا رو فقط لود کنی.
خوب الان هم توی صفحه است !! هم توی صفحه هم توی ابزارک ها همینه
از ابزارک ها حذف کن و لینک بذار فقط.
سلام خسته نباشید
من در جی تی متریکس There is 1 static component without a far-future expiration date.
رو بهم نشون میده نمیدونم باید چطور رفعش منم
ممنون میشم راهنماییم کنید
سلام. نمیتونید رفع کنید. و البته نیازی هم نیست رفع کنید.
نظرات مطالعه کنید و یا مقاله رو بخونید تا علت رو متوجه بشید.
سلام میشه بگید واسه این 3 تا ارور باید چیکار کنم.
سلام. هیچ کاری. نیازی هم نیست رفع کنید.
نظرات مطالعه کنید و یا مقاله رو بخونید تا علت رو متوجه بشید.
سلام
منم همین ارور هارو داشتم ولی در افزونه wp rocket در قسمت افزودنی ها گزینه ای هست برای Improve browser caching for Google Analytics وقتی این گزینه رو فعال کردم خطا های فوق از بین رفت.
سلام امیرحسین عزیز. ممنون از اینکه تجربه خودت رو گفتی. ولی باید در نظر داشته باشیم که این موارد ارور نیستن، هیچ نوع مشکلی کد انالیتیکس برای سایت نداره و میشه این موارد رو نادیده گرفت.
موفق باشی.
سلام خسته نباشید
کد را اضافه کردم اما هنوز برطرف نشده
برای این موارد چه کدی اضافه کنم؟
باتشکر
سلام محمد عزیز.
برطرف شده. این ادرس هایی که دارید نشون میدید مربوط به خارج از سایت است. همون طور که در مقاله و همینطور در نظرات به این مورد بارها اشاره کردیم شما نمیتونید فایل ها و ادرس هایی که مربوط به سایت شما نیست ولی در سایت شما لود میشه رو expires headers تعریف کنی.
موفق باشی.
عرض سلام و خسته نباشید خدمت جناب آریافر عزیز
بنده یه فرد معلول هستم و به امید پیشرفت و کسب درامد یک سال و نیمیست پا به عرصه وب گذاشم و به نوبه خودم و لطف شما هر روز بهتر از دیروز پیشرفت میکنم
بنده قالب قبلی سایتمو از سایت دزد چین خریده بودم خوشبختانه عوضش کردم
با توجه آموزش رفع خطای ٰLeverage browser caching رتبه پیج اسپید 2% بهبود یافت اما مورد هنوز رفع نشده
این موارد مربوط به مشکل Add Expires headers است و بیشتر آدرس های ذکر شده مربوط به فالبه و داخل سروره
لذا خواهمندم یاری بفرمایید سپاس بیکران
سلام محمد مهدی عزیز. امیدوارم هر روز موفق تر و سلامت تر از دیروز باشی.
مقاله رو لطفا مطالعه کن، کدی که نیاز داری رو داخل مقاله درج کردم. اگر کد گذاشتی اعمال نشد به هاست تیکت بزن.
سلام
آموزش بسیار کامل و حرفه ای بود با تشکر
من این خطا را برای crisp که برای چت آنلاین در سایت نصب کردم دارم.
آیا خطای مربوط به این پلاگین هم سرور خارجی محسوب میشه؟
با توجه به دسترسی داشتن به کنترل پنل نمیشه مشکلش رو حل کرد؟
سلام دوستم. این اصلا خطا نیست. هر چیزی ابزار جی تی متریکس میگه به معنی درست بودن نیست. فایل های crisp داره ۴ ساعت کش میشه و همین مقدار مناسب هست.
با این حال خیر شما هیچ نوع دسترسی به این فایل ها ندارید و خارج از سرور شما هست.
درود بر شما
درودها نثار شما
سلام
اگه تونستی بگی با این سه تا ارور تو جی تی متریکس چیکار کنم . میفهمم کارت درسته. گشنگ توضیح بدیا.
Add Expires headers
There are 3 static components without a far-future expiration date.
پیشاپیش از وقتی که میزارید برای پاسخ دادن سپاسگزارم.
سلام. اگر مقاله رو میخوندید و یا نظرات مطالعه میکردید پاسخ پیدا میکردید.
ادرس هایی که در نظر ارسال کردی مربوط به خارج از سایت شما هست دسترسی ندارید تا کش اعمال کنید و اصلا هم نباید کش اعمال بشه برای چنین فایل هایی.
خیلی ممنون .
درسته که ارورم درست نشد ولی کارت درسته.
این لینکارو پیدا کردم . همشون اولش همون حرف شمارو میگن ولی بعدش یه سری راه حل هم دادن . نظرتون چیه ؟
https://www.techwalla.com/articles/how-to-add-an-expired-header-for-google-analytics
https://wordpress.org/support/topic/autoptimize-generating-error-in-gtmetrix-error-add-expires-headers/
https://stackoverflow.com/questions/29091014/how-do-i-leverage-browser-caching-for-google-fonts
مقاله اولی و سومی مربوط به بحث ما بود و راه حل های ارائه شده حرفه ای نیست. طبیعتا گوگل خیلی بهتر از ما میدونه باید چه بکنه و چه مقدار کش لازم هست.
با این حال اگر فکر میکنید نیاز دارید میتونید از راه حل های گفته شده در سایت های لینک شده استفاده کنید.
سلام
موقع بررسی gtmetrix به روش http برای سایت من ارور An error occurred fetching the page: Status read failed: Connection reset by peer میده ولی وقتی https وارد میکنم بررسی میکند و به ریدایرکت http به https دامنه ایراد میگیره!
سلام. بررسی شد خطایی که گفتید رو نمیده
سلام ممنون از مقاله خوبتون.سایت من با asp.net هست و در سرور هم فایلی با نام htaccess ندارم! اگر این فایل را در قسمتی که صفحاتم را میگذارم ایجاد کنم و همین کدها را درون ان بنویسم صحیح است؟؟؟ متشکر
سلام خواهش میکنم، خیر صحیح نیست.
سلام آقای آریافر و ممنون بابت مطالب خوبی که گذاشتید
من سایتم asp هستش و اون قطعه کد خطا میده وقتی توی web.config قرارش میدم
میخوام بدونم معادلش توی asp چیه؟
سلام، بستگی به تنظیمات هاست شما داره، اصولا در پنلی که به شما میدن میشه این ویژگی رو فعال کرد، و البته باید دید که ایا شما درست تشخیص دادید که این ویژگی غیرفعال هست یا نه، کد بالا برای سایت های php کاربرد داره. پیشنهاد میشه در درجه اول به هاستینگ تیکت بزنید و درخواست فعال سازی بدید، البته اگر مطمئن هستید درست تشخیص دادید، چرا که صرفا قرمز بودن این ویژگی در جی تی متریکس به معنی غیرفعال بودنش نیست.
سلام و ممنون از مطلب مفیدتون،
طبق چیزی که شما گفتید انجام دادم اما متاسفانه در GTmetrix هیچ تغییری مشاهده نشد!
آیا امکانش هست راهنمایی کنید
سلام، آدرس سایت ارسال کنید، البته هر آنچه که میدونستیم گفتیم در داخل مقاله.
آدرس سایت اضافه شد!
این خطا به خاطر وجود ادرس ها در خارج از هاست شما است و دسترسی ندارید به این موارد، چون تبلیغات درج کردید و خیلی هاش برای این مورده. ادرس ها رو در این ارور مشاهده کنید.
واقعا از راهنمایی شما ممنونم.
سپاس
خیلی این خطا در سرعت سایت شما مهم نبود.
خواهش میکنم و موفق و پایدار باشید.
سلام خسته نباشید اگه ارور مربوط ب یک فونت باشه باید چیکارش کرد؟
سلام، باید همونکاری کرد با بقیه فایلها صورت میگیره. در بالا نحوه کش کردن فایلها توضیح داده شده
با سلام
ممنون از توضیحات خوب شما
اخیرا موقع لود اول سایتم با تبلیغات خارجی به صورت popup روبرو میشم احساس من اینه که ممکنه از لینک های خارجی ارجاع داده بشه وقتی این خطا رو بررسی کردم متوجه این لینک ها شدم که شامل زیر هستش
خودم هم نمیدونم این لینک ها رو از چه افزونه یا فایلی تو هاستم داره فرستاده میشه
چطوری میتونم این لینک هارو ردیابی کنم ؟
سلام، خواهش
تک تک افزونهها رو غیرفعال کنید و ببینید مشکل از کجا هست، البته ۲ لینک اول معلومه و موردی نداره.
همرو غیر فعال کردم بجز ووکامرس بازم اومد ولی وقتی غیر فعال کردم درست شد اشکالی توی ووکامرسم پیش اومده ؟
ممکنه از تداخل بین قالب و افزونه باشه و یا محدودیت هایی در هاست باشه. افزونه رو هم از مخزن وردپرس دانلود کنید.
سلام ممنون از سایت خوبتون میشه این اموزش را برای iis را هم توضیح دهید
سلام، جهت فعال سازی این مورد در iis به پشتیبان هاست خود تیکت ارسال کنید.
سلام و عرض ادب
قربان اید کد ها رو باید به بالای تمام صفحات اضافه کرد یا فقط به صفحه اول سایت کفایت میکنه؟
درود
همونطور که در مقاله اشاره کردیم این کدها باید در فایل htaccess درج بشه.
با سلام
من دقیقا کار هایی که شما گفتید رو انجام دادم اما نه در gtmetrix بخش Add Expires headers تغییری کرد و نه در سرعت سایت تغییری رو حس میکنم!
و حس میکنم این ویژگی هنوز به سایتم اضافه نشده!
از کجا میتونم متوجه بشم که این ویژگی در سایتم فعال است؟
سلام
ابزارهای مختلفی هست، قسمت نحوه چک کردن کش اعمال شده رو مطالعه کنید. و همینطور در پست ابزارهای تست سرعت سایت میتونید بررسی کنید.
درود
من در سایت وردپرسی که دارم افزونه JCH OPTIMIZE رو نصب کردم و انگار همین کدها رو خودش بصورت زیر اضافه کرده :
اما همچنان خطای Add Expires headers رو دارم :
سلام
همونطور که در مقاله گفتیم شما نمیتونید بر روی فایلهای خارج از هاست خود، یعنی فایلهایی که از سمت هاست شما لود نمیشن کنترلی داشته باشید، مثل فایلهای گوگل که مشاهده میکنید.
تشکر از توجهتون
پس این چنین موارد زیاد مهم نیستند.
بستگی به تعداد دامنههای مجزا و همینطور سرور اون فایلها و حجم فایلهای لود شده داره، به شکل کلی هر چه تعداد این موارد کمتر باشه طبیعتا بهتر خواهد بود.
موفق باشید.
سلام
ممنون از راهنمایی خوبتان
سپاسگذارم
سلام، خواهش میکنم، موفق باشید
با سلام و تشکر بابت وب سایت خوبتان
سایت من با ادرس koodakstar.ir تو ارور جی تی متریکس برای خطای Add Expires headers و Use a Content Delivery Network (CDN) به لوگوی ستاد ساماندهی ایراد گرفته و همچین خطایی داده
Using a CDN YSlow doesn’t recognize? Specify your CDNs in your User Settings.
There is 1 static component that is not on CDN.
logo.samandehi.ir/logo.aspx?id=77765&p=yndtyndtyndtwlbqujyn
ممنون میشوم برای هردو بفرمایید چیکار کنم رفع بشه
و همچنین Use cookie-free domains صفر میباشد و پشتیبان هاستم میگه از کلودفیر باید پیگیری کنید که من هم نمیدونم چیکار کنم.کلود فیر ساختم که اوکی بشه ولی نشد
سلام، برای خطای Use cookie-free domains بهترین راه کدنویسی کردن هست تا بشه برخی از فایلها و عکسهای موجود در سایت رو به یک هاست دیگر که کوکی نداره انتقال داد، مقاله خطای Use cookie-free domains رو بخونید، هر چند راه حلهای سادهای در مقاله ذکر نشده و توصیه میشه برای رفع این خطا به یک فرد با تجربهتر بسپارید.
درباره لوگوی ساماندهی هم میتونید همانند سایت ما عکس لینک دار در صفحات قرار بدید.
توجه داشته باشید برخی اقدامات غیرضروری که صرفا در جهت کسب رتبه A باشه، نه تنها باعث بهبود سرعت سایت نمیشه بلکه نتیجه عکس ممکنه داشته باشه
موفق باشید
تشکر فراوان
خواهش، موفق باشید