آموزش سئو فنیآموزش افزایش سرعت سایت با ابزار GTMetrix

رفع خطای Specify a cache validator و Configure entity tags

آموزش بهبود سرعت سایت با GTmetrix – رفع خطاهای PageSpeed

درودی دوباره به شما دوستان عزیز، در ادامه آموزش gtmetrix  از مقالات سئو سایت میزفا در خدمت شما هستیم. در جلسه گذشته که درباره رفع خطای Specify a Vary: Accept-Encoding header مقاله‌ای را انتشار دادیم، در این جلسه قصد داریم درباره مشکل رایج Specify a cache validator و حل آن در جی تی متریکس صحبت کنیم و بررسی کنیم، راه حل این مشکل هم مثل بقیه مشکلات دیگر ساده می‌باشد پس ما میزفا همراه باشید.

نکته: با خواندن این مقاله خطای (Configure entity tags (ETags که مربوط به بخش YSlow یاهو می‌باشد را هم می‌توانید رفع کنید.

خلاصه‌ای از خطا Specify a cache validator

نام: Specify a cache validator
نوع: سرور
اولویت: زیاد
میزان سختی: راحت
میانگین امتیاز: 92%

specify a cache validator
specify a cache validator
[gap height=”15″]  

 

درباره خطای Specify a cache validator در جی تی متریکس

زمانی که با ارور Specify a cache validator روبه رو می‌شوید نمایان‌گر این موضوع است که تنظیمات کش سرور شما به خوبی تنظیم نشده، حال منظور از اینکه کش وب سرور به خوبی تنظیم نشده است را در ادامه خواهیم گفت.

هر سروری که به خوبی تنظیم شده باشد یک سری محتوای هدر HTTP برای کش کردن فایل‌ها سمت کاربران در جهت بهینه سازی سرعت سایت ارسال می‌کند این هدرهای کش اصولا دو عمل اصلی را انجام می‌دهند، یکی Cache Validate یعنی معتبرسازی فایل‌های کش و دیگری Cache Length به معنای طول کش یا مقدار زمان کش است. و هر کدام از این موارد نباشند مشکلاتی برای سایت ایجاد می‌کنند. در ادامه این عبارات را تشریح می‌کنیم.

خطای specify a cache validator در PageSpeed گوگل
خطای specify a cache validator در PageSpeed گوگل

Cache Length

دو هدر HTTP داریم که Cache Length را تعیین می‌کند Cache-Control و Expires

این دو هدر تعیین می‌کنند که چه مدت یک فایل باید نگه داشته شود و اگر این دو هدر تنظیم نشده باشند خطای Leverage browser caching رخ می‌دهد و اگر چنین خطایی را دارید می‌توانید به کمک این پست رفع کنید. ولی اگر چنین مشکلی ندارید به شکل خلاصه بدانید که در هدر Cache-Control مدت زمان انقضا مشخص می‌شود به این منظور که یک عدد بر حسب ثانیه برای کش کردن فایل در نظر می‌گیرد ولی در هدر Expires تاریخ زمان انقضا درج می‌شود و یک تاریخ مشخص می‌شود که مثلا تا فعلان تاریخ فایل کش شود. استفاده از هر دو هدر  Expires  و  Cache-Control لازم نیست، ولی حداقل استفاده از یکی در جهت افزایش سرعت سایت لازم و  ضروری است ولی اگر هر دو را اضافه کنید جز محکم‌کاری در جهت کش شدن فایل‌ها کار خاص دیگری نکرده‌اید ولی به شکل کلی هدر Cache-Control نسبت به هدر Expires اولویت بالاتری دارد.  Cache-Control  جدیدتر و معمولا این متد توصیه می‌شود ولی با این حال هنوز برخی سایت‌های آنالیز سرعت مثل Gtmetrix  هدر Expires را چک می‌کنند.

اینم بخون، جالبه
رفع خطای Optimize the order of styles and scripts در gtmetrix
نمونه‌ای از cache contro header
نمونه‌ای از cache contro header

 

نمونه‌ای از expires header
نمونه‌ای از expires header

 

Cache Validate

دو هدر HTTP داریم که Cache Validate را تعیین می‌کند Last-Modified و Etag

این دو هدر تعیین می‌کنند که فایل کش شده برای چه تاریخی و ورژنی است و اگر به خوبی تنظیم نشده باشد خطای Specify a cache validator رخ می‌دهد. به این نکته توجه داشته باشید که شما فقط فایل‌هایی را می‌توانید رفع خطا کنید که در سرور شما باشد پس اگر فایلی در سایت شما از طریق یک سرور دیگری لود می‌شود به علت دسترسی نداشتن به آن سرور و فایل، نمی‌توان کاری انجام داد.

ما قرار هست در این پست درباره هدرهایی که Cache Validate را تعیین می‌کنند صحبت کنیم و همان‌طور که گفتیم این هدرها نشان می‌دهد که فایل کش شده چه ورژنی دارد و اخرین ورژن کش شده برای چه تاریخی است، هر دو هدر Last-Modified و Etag چنین عملی را انجام می‌دهند، به این دو هدر درخواستی اسم دیگری هم دارند و به آن‌ها Conditional requests یا درخواست‌های شرطی هم گفته می‌شود، در ادامه بیشتر در این باره صحبت خواهیم کرد

درخواست شرطی Last-Modified

درخواست last modified header
درخواست last modified header

مقدار Last-Modified یک تاریخ خاصی را نشان می‌دهد، Last-Modified تاریخ آخرین ورژن فایل یا تاریخ اخرین ویرایش یک عکس یا صفحه است، همانند کد زیر:

Last-Modified: Mon, 03 Jan 2011 17:45:57 GMT

زمانی که فایلی یا صفحه‌ای را تغییر و ویرایش دهید، باید این تغییرات نیز سمت کاربر هم اعمال شود تا به درستی سایت کار کند، بنابراین وقتی کاربر دوباره وارد سایت شما می‌شود یک درخواست شرطی توسط هدری مجزا با عنوان If-Modified-Since ارسال می‌کند، مقدار این هدر مجرا از Last-Modified گرفته شده است، هدر If-Modified-Since زمانی که سمت سرور ارسال می‌شود بررسی می‌کند تا ببیند آیا تاریخ سمت سرور به روز شده است یا خیر، و منتظر پاسخ وب سرور می‌شود، اگر پاسخ با کد 200 ارسال شود به معنای جواب مثبت است و تاریخ تغییر کرده است و ولی اگر وب سرور کد 304 یا همان 304 Not Modified را ارسال کند به این معنا است که فایل مورد نظر به روز نشده است و از فایل موجود در کش مرورگر کاربر استفاده شود.

If-Modified-Since: Mon, 03 Jan 2011 17:45:57 GMT

اگر توضیحات قسمت Cache Length را مطالعه کرده باشید اشاره کردیم که  هدر Cache-Control نسبت به هدر Expires اولویت بالاتری دارد و اگر فرض بگیریم وب سرور در پاسخ به درخواست If-Modified-Since کد 200 را ارسال کند سر انجام تاریخ Last-Modified تغییر خواهد کرد و سر انجام باعث می‌شود مقادیر دو هدر Cache-Control و Expires تغییر کند و فایل جدید با اخرین ویرایش موجود در کش کاربر ذخیره شود.

اینم بخون، جالبه
رفع خطای Serve scaled images - بهینه سازی عکس

درخواست شرطی Etag

درخواست etag header
درخواست etag header

هدر ETag با اسم کامل Entity Tag به معنای “برچسب هویتی” همانند هدر Last-Modified تغییرات صفحه یا فایل را به مرورگر کاربر اطلاع می‌دهد، با این تفاوت که به جای تاریخ و زمان آخرین ویرایش صفحه یا فایل از محتوای متنی منحصر به فردی برای هر صفحه یا فایل (مثل یک MD5 Hash) برای شناسایی آن صفحه توسط سرور استفاده می‌شود

ETag: "15f0fff99ed5aae4edffdd6496d7131f"

و از طرفی مرورگر کاربر به جای درخواست هدر قبلی If-Modified-Since که در حالت Last-Modified ارسال می‌کرد این بار هدر مجزایی با عنوان If-None-Match که مقدار آن از هدر ETag گرفته شده است به سمت وب سرور ارسال می‌کند و دوباره همانند قبل وب سرور با ارسال کد 200 یا 304 تعیین می‌کند که آیا فایل یا صفحه نیاز به آپدیت شدن در سمت کش کاربر را دارد یا خیر.

If-None-Match: "15f0fff99ed5aae4edffdd6496d7131f"

نکته: در بخش YSlow سایت GTMetrix خطای (Configure entity tags (ETags موجود است که اشاره به نبودن هدر ETags می‌کند که با رفع خطای Specify a cache validator آن هم رفع می‌شود.

نحوه رفع خطای Specify a cache validator

برای رفع این ارور باید هدرهای Last-Modified یا Etag یا هر دو با هم از سمت وب سرور ارسال شود، هدر درخواست Last-Modified به شکل کلی از سمت وب سرورها فعال است و نیازی به تنظیمات دستی آن نیست، هدر Etag در وب سرورهای Apache ورژن 2.4 به بالاتر به شکل اتوماتیک فعال است و سمت کاربران این هدر ارسال می‌شود و در وب سرور NGINX از 2016 به بعد به شکل پیش فرض هدر Etag در آن فعال است.

پس شمایی که این خطا را دارید چه کاری باید انجام دهید؟

اول توجه داشته باشید با هاست مناسب از شرکت‌های معتبر، بعید است با مشکل Specify a cache validator روبه‌رو شوید به هر حال با برخورد این خطا به پشتیبانی هاست خود تیکت زده و درخواست دو هدر یا حداقل یک هدر را ارسال کنید، و راه بعدی برای این مشکل رفع خطای Leverage browser caching است، گاهی تنظیمات وب سرور به شکلی است که با رفع ارور Leverage browser caching مشکل موجود در Specify a cache validator هم رفع می‌شود، و اگر دقت کرده باشید اکثر سایت‌های ایرانی برای رفع خطای Specify a cache validator کد مربوط به Leverage browser caching را قرار می‌دهند.

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

اینم بخون، جالبه
رفع خطای Specify image dimensions در gtmetrix
[gap]

حل مشکل Specify a cache validator بسیار راحت می‌باشد امیدواریم در این آموزش سئو که باعث بالا بردن سرعت سایت و افزایش رتبه سایت در گوگل می‌شود، کمک شایانی کرده باشیم، اگر سوالی داشتید حتما در انجمن میزفا بپرسید. این جلسه از دوره آموزش جامع جی تی متریکس که مربوط به رفع ارور Specify a cache validator بود، هم به پایان رسید در جلسه بعد به معرفی خطای Specify image dimensions در PageSpeed گوگل می‌پردازیم. با ما همراه باشید.

رفع خطای Specify a cache validator و Configure entity tags
امتیاز 4.5 از 6 رای
برچسب ها

پوریا آریافر

اولین کسب و کار آنلاین خودم را در فیسبوک راه‌اندازی کردم و در سال ۲۰۱۱ یکی از پرتعامل‌ترین صفحات فارسی با ۸۰ هزار فالور فعال را داشتم. سپس وارد دنیای شبکه شدم و در انتهای سال ۲۰۱۲ مدرک MCSE مایکروسافت را دریافت کردم، در دوران خدمت سربازی مسئول بهینه سازی یک وبسایت خبری معتبر شدم و آشنایی با سئو را آموختم و در سال ۲۰۱۴ توانستم به رتبه ۴۰۰ الکسا نزدیک کنم. برخلاف میل درونی، وارد دانشگاه شدم و سه ساله در مقطع کارشناسی IT فارغ التحصیل شدم، در همان سال بزرگ‌ترین کانال تلگرامی IT با ۴۰ هزار عضو را داشتم، که فروختم تا بتوانم تمرکز را فقط بر روی سئو بگذارم، فعالیت‌های سئو به شکل تخصصی بنده در قالب پروژه‌های مختلف و آموزش‌های حضوری و غیرحضوری در دفتر میزفا و دانشگاه علامه طباطبایی تهران صورت ‌می‌گیرد، تجربه بهینه سازی موفقی در بهبود UX و CRO پروژه‌های سئو کسب کرده‌ام. در همه ابزارهای گوگل به جز adwords تسلط کاملی دارم. عاشق کسب تجربه های جدید هستم. راز پیشرفت در هر کاری را یادگیری و یاددادن می‌دانم و میزفا که در اواخر ۲۰۱۶ راه‌اندازی شده، می‌تواند چنین بستر مناسبی را فراهم کند. نقد و بازخوردهای سازنده شما، جوهر تلاش‌های مستمر ماست تا یک قدم خودمون بهبود بدیم. منتظریم ...

نوشته های مشابه

‫14 نظرها

  1. سلام – ممنون از زحمات شما – یه سوال – در مطلب گفتید :
    —–
    نکته: در بخش YSlow سایت GTMetrix خطای (Configure entity tags (ETags موجود است که اشاره به نبودن هدر ETags می‌کند که با رفع خطای Specify a cache validator آن هم رفع می‌شود.
    —-
    الان من Specify a cache validator سایتم 100% هستش ولی (Configure entity tags (ETags سایتم 0% هستش – ممنون میشم راهنمایی کنید.

    1. سلام مهدی جان. خواهش.
      حتما برای شما از نوع Last-Modified است و etags نیست. هر چند خیلی مهم نیست ولی میتونی بری صفحه رفع خطای Leverage browser caching و اونجا کدهای مختلف تست کنی و بررسی کنی.

  2. Configure entity tags (ETags) الان این خطا رو چجوری رفعش کنم ؟ متوجه نشدم از این مقاله دقیقا !

    خیلی مقاله هاتون کلیشه ای و جنبه سئو داره کلا کاربر پسند نیستن

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

      1. صرفا چون مقاله به تفسیر متغییر ها به صورت کامل همراه با مثال نپرداخته است اینگونه برداشت میشود
        در صورتی که بنده تا حدودی با آقای ایمان موافقم چون هدف از این مقالات ، کاربران هدفی میباشند که به دنبال رفع مشکل هستند نه آنهایی که صرفا به دلیل علاقه به اینگونه مطالب و یا معلمان و دانشجویان سئو که مفهوم تئوری را بیشتر ترجیح میدهند ( حداقل در بازه ی زمانی تقریبا نامشخصشان ) .
        بنده تخصص انچنانی در زمینه ی برنامه نویسی ندارم اما میدانم اگر واقعا موضوعی برای مثال مانند کد نویسی در بخشی از طراحی مرا از حرکت نگه دارد قطعا مشکل را برطرف میکنم
        همین مبحث cache control تقریبا سه روز کامل با مرور بیش 500 صفحه ی اینترنتی وقتم را گرفت تا در نهایت توانستم با اضافه کردن etag ، pragma پارامتر هایی دیگر مشکل انقضای فایل ها را برطرف کنم و امتیاز کامل 100 gtmetrix را بدست آورم
        تمامی لینکهای های گوگل را کبود کردم تمامی کد های مختلف برای cache control را در گیت هاب ، استک اور فلو و سایت های دیگر امتحان کردم
        اما در نهایت توانستم با ویرایش کد سالمی بسازم که تمام نیازم رابرطرف کند

        1. گاهی در درون دقت به مفاهیم راه حل پیدا میشه. متاسفانه اکثر ما به دنبال راه حلی هستیم که شبیه هلو خوردن راحت باشه. در دل این مقاله به خوبی به راه حل هم اشاره شده و مثال هم زده شده.
          خوشحالیم مشکل شما حل شده ولی دقت داشته باشید که ۵۰۰ صفحه وقت شما رو نگرفته، بلکه به دانش شما اضافه کرده، دانشی که ارزش هر چیزی رو داره. قدرت انسان های امروزی هم بر پایه همین دانشی هست که شما میگید وقتم رو گرفته.
          درضمن نمره ۱۰۰ در gtmetrix پر خطا به معنی سرعت خوب نیست.
          انتظار از شما میره که تجربه خودتون با جزئیات بیشتر در اختیار سایر کاربران قرار بدید تا بقیه بتونن مثل هلو مشکلشون حل کنن و کمتر زحمت به فکر کردن بدن 🙂

          1
  3. سلام
    من به پشتیبانی هاست این ارور را یادآوری کردم
    گفتند با نصب افزونه jch این مورد برطرف میشود من از اسکریپت جوملا استفاده میکنم آنها میگویند مشکل از اسکریپت شماست
    آیا این پاسخ درستی است؟

    1. سلام، این مورد ربطی به هاست نداره و باید در سمت کدنویسی حل بشه، بله درست گفتن.

  4. با عرض سلام و خسته نباشید بابت آموزش های عالی تون
    من یک وبلاگ بلاگفا تشکیل دادم تقریبا همه مشکلات سایت gtmetrix رو برطرف کردم فقط مشکل Leverage browser caching را نتونستم حل کنم و خیلی تلاش هم کردم ولی هیچ کدوم عمل نکرد
    ممنون میشم راهنمایی کنین من رو
    آردس وبلاگ:Mostanadd.blogfa.com
    با تشکر

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

      1. ممنون بله حالا فعلا واسه یاد گرفتن کلیات سئو این وبلاگ رو طراحی کردم و یه دلیل دیگش هم این بود که دیدن همه با وردپرس سریع با چندتا افزونه همه سئوشون رو انجام میدن(میدونم این مسئله خیلی خوبه)ولی اینکه ادم خودش از صفر شروع کنه و یادبگیره ارزشش بیشتره.
        ممنون از اینکه پاسخ دادین یه سوال دیگه البته با عرض معذرت
        تو نتایج گوگل این گزینه میاد Your page is not mobile-friendly. میدونم ماله اینکه قالب با گوشی های موبایل تطابق نداره ولی می خواستم ببین کدی هست درستش کنه،من این کد رو زدم ولی درست نشدmeta name=”viewport” content=”width=device width, initial-scale=.3″
        خیلی ببخشیدا یه سوال دیگه
        من robot.txt رو اوایل به اشتباهی فعال کرده بودم که کلا وبلاگم رو هیچ موتوری ایندکس نمیکرد،بعد از چند وقت فهمیدم و کد meta NAME=”ROBOTS” CONTENT=”ALL” / رو تو قالب وبلاگم قرار دادم و با webmaster هم صفحه mostanadd.blogfa.com/robots.txt رو remove کردم الان از کجا باید بفهمم که صفحاتن ایندکس میشه یا نه؟با توجه به اینکه هنوز کد های robot در robot.txt وجود داره
        خیلی معذرت می خوام سوالاتم زیاد شد ولی ممنون میشم جواب بدین

        1. سلام لطفا سوال‌هاتون رو در پست مربوطه بپرسید تا پاسخ داده بشه، سوال اول مربوط به سئو داخلی میشه و سوال دوم مربوط به پست فایل robotsx.txt میشه
          دوست گرامی سئو یک سایت بستگی به نوع CMS نداره، وردپرس سئوی بهتری نسبت به بقیه CMSها نداره، البته یک سری ابزارها داره که صرفا به شما یاداوری میکنن برخی از فاکتورهای سئو رو، مهم نوع سیاست ها و دسترسی های شما هست، سیاست ها منظورم نحوه نوشتن مقاله‌ها و کدنویسی و … و دسترسی ها منظورم میزان کنترلی هست که بر روی سایت دارید، مثلا در وبلاگها نمیشه دسترسی مناسب داشت پس در نتیجه نمیشه سئوی خوب پیاده سازی کرد.
          موفق و پیروز باشید

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

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

دکمه بازگشت به بالا
سایت خود را در گوگل مدیریت کنید + ۱۵ ساعت فیلم آموزشیجزئیات بیشتر اینجا کلیک کنید
بستن
با موفقیت ثبت شد، میزفا از شما برای عضویت در خبرنامه هفتگی تشکر میکند.

عضویت در خبرنامه هفتگی برای دریافت:

  • فیلم و مقاله رایگان سئو
  • آموزش‌های UX ، GA و GTM
  • مقاله های تخصصی ASP.NET Core
  • اطلاع رسانی از محصولات
ترک میزفا خوب نیست!
دوره رایگان سئو