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

رفع خطای Leverage browser caching و هر آنچه که باید درباره کش بدانید

آموزش افزایش سرعت سایت با GTmetrix

درود، از سری دوره‌های آموزش کار با GTmetrix در خدمت شما هستیم قصد داریم در این دوره سایتی بهینه توسط ابزارهای آنلاین مثل جی تی متریکس ایجاد کنیم. در جلسه قبل درباره رفع ارور Inline small CSS and JavaScript صحبت کردیم. در این جلسه قصد داریم درباره مشکل Leverage browser caching و حل اون در GTmetrix صحبت کنیم و ببینیم چطور می‌تونیم این مشکل را در سایت پیدا و رفع کنیم و چرا اصلا این موضوع برای افزایش سرعت سایت ما اهمیت دارد.

خلاصه‌ی از خطا Leverage browser caching

نام: Leverage browser caching
نوع: مربوط به سرور
اولویت: بالا
میزان سختی: متوسط
میانگین امتیاز: 59%
[gap height=”15″]

 

 

قطعا شما هم از ابزارهای پیج اسپید، جی تی متریکس یا Pingdom جهت تست سرعت سایت خودتان استفاده کردید و یکی از خطاهای معروف و ایرادهایی که این ابزارهای آنلاین می‌گیرید Leverage browser caching هست، حال با خواندن این پست وقت آن رسیده که مشکل را حل کنید. برای حل مشکل Leverage browser caching در این ابزارها راه‌کارهای ساده‌ای وجود دارد مخصوصا اگر از CMS های اماده و رایگان برای سایتتان استفاده کرده باشید. در این مقاله درباره معنی این اخطار، چه تاثیراتی بر سایت دارد، و گزینه‌های موجود برای رفع این خطا را به شما خواهیم گفت.

Leverage browser caching چیست (کش)

خطای Leverage browser caching که اسکرین‌شات آن را در Pagespeed گوگل مشاهده می‌کنید به کش مرورگر شما اشاره می‌کند درواقع باید گفت کش چیست ؟

هر بار که شما از وب سایتی بازدیدی انجام می‌دهید لازم است که یک سری فایل‌هایی را دانلود کنید تا سایت قابل مشاهده باشد فایل‌هایی مانند، CSS، JS، HTML و عکس‌ها که در کش مرورگر (یا کش محلی یا کش لوکال) ذخیره می‌شود. حال وقتی به صفحه‌ی دیگری از آن سایت مراجعه می‌کنید موارد تکراری صفحات مثل لوگو سایت فایل‌های CSS و غیره دیگر دوباره دانلود نمی‌شوند بلکه از طریق کش محلی مرورگر فراخوانی صورت می‌گیرد. پس به این ترتیب لازم نیست با هر بار لود کردن صفحه‌های سایت، فایل‌های مشترک بین صفحات را دانلود کنید. این همان دلیلی است که باعث می‌شود در اولین بازدید از یک سایت زمان بیشتری برای لود شدن لازم باشد تا زمان لود صفحات در تکرار بازدید از همان سایت.

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

leverage browser caching pagespeed insights
leverage browser caching pagespeed insights

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

اینم بخون، جالبه
نحوه بهینه سازی و افزایش سرعت لود سایت به کمک جدول Wp_options از پایگاه داده

جزئیات تفاوت هدر Expires و Cache-Control

  • Expires Header

    Expires همان‌طور که گفتیم یک تاریخ برای کش کردن فایل‌ها میگیرد مثلا تا فعلان تاریخ یک فایل را کش می‌کند و تا آن تاریخ از کش مرورگر استفاده می‌کند و بعد از آن تاریخ دوباره درخواست برای دریافت آن فایل به سرور ارسال می‌شود. نمونه کد:

    <IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access 1 year"
    ExpiresByType image/png "access 1 year"
    ExpiresDefault "access 2 days"
    </IfModule>
    

    و مثلا خروجی که در هدر HTTP مرورگر می‌توان دید:

    expires header
    expires header chrome
  • Cache-Control Header

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

    به کد زیر توجه کنید:

    # 1 Month for most static assets
    <filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$">
    Header set Cache-Control "max-age=2592000, public"
    </filesMatch>
    

    کد بالا تنظیمات  Cache-Control  است که به شکل هدر HTTP ارسال می‌شود. و اعمال این کد بستگی به نوع فایل‌هایی که تعریف می‌کنیم، دارد.

    حال به بررسی خط به خط دستور بالا می‌پردازیم

    1. خط یک هیچ عملی را انجام نمی‌دهد جز اینکه یاداور برای شما است درواقع دستورات را تشریح می‌کند و  .htaccess آن را نادیده می‌گیرد چرا که با # شروع شده است. به شکل خلاصه کامنتی جهت آگاهی و یاداوری برای استفاده کننده از کد بالا است.
    2. خط دو که قسمت مهم دستور ما است میگه “اگر فایل‌ها از این نوع بودند ما یک سری عملیات را انجام می‌دهیم” . درواقع عمل کش فقط برای این نوع فایل‌ها صورت می‌گیرد. شما اگر تمایلی ندارید مثلا فایل gif کش شود کافیست آن را از لیست نوع فایل‌ها بردارید و یا اگر تمایل دارید فایل‌های HTML کش شود کافیست آن را به لیست نوع فایل‌ها اضافه کنید تا آن عمل خاص که در اینجا کش کردن است اعمال شود.
    3. خط سه همان عملیاتی هست که باید انجام شود، هدر  Cache-Control مقداری را می‌گیرد. Header set Cache-Control نام هدری است که به شکل HTTP در مرورگر فراخوانی می‌شود و  max-age=2592000 بمدت زمان برحسب ثانیه است و اشاره می‌کند که فایل باید چه مدت در کش مرورگر بازدیدکننده ذخیره شود و مقدار 2592000 برابر با یک ماه است یعنی همان زمان انقضا یک فایل.
      مقادیر رایج، موارد زیر هستند:
      یک دقیقه: MAX-AGE=60
      یک ساعت: MAX-AGE=3600
      یک روز: MAX-AGE=86400
      یک هفته: MAX-AGE=604800
      یک ماه: MAX-AGE=2628000
      یک سال: MAX-AGE=31536000و یکی از دستورات کش ممکن است Public باشد یعنی کش مورد نظر به شکل عمومی است اگر شما در جهت افزایش سرعت سایت خود قرار هست کش را به هاست اضافه کنید و اطلاعات موجود خصوصی نیست میتوانید از  Public استفاده نمایید که اصولا اکثر فایل‌ها از این نوع دستور هستند. می‌توان به جای  Public  دستورات دیگر هم درج کرد، به شکل کلی سه دستور دیگر هم در Cache-Control وجود دارد:

      • PUBLIC
        در بالا توضیح داده شد.
      • PRIVATE
        دستور Private به این معناست که کش شدن برای یک کاربر خاص است. مثلا اگر من به حساب فیسبوک خود یعنی آدرس facebook.com/mizfacom بروم قطعا مواردی برای من کش خواهد شد که اگر شما به آن آدرس بروید، برای شما کش نخواهد شد چرا که من وارد اکانت خود شده و دارای حریم اطلاعاتی هستم که فیسبوک تعیین کرده و همین موضوع برای شما هم هست و وقتی شما وارد اکانت خود می‌شوید و به آدرس فیسبوک خود مراجعه می‌کنید مواردی که برای شما کش می‌شود لزوما همه آنها برای من کش نمی‌شود.
      • NO-STORE
        دستور No-Store یک دستور قوی‌تری است که از کش شدن تحت هر شرایطی جلوگیری می‌کند.
    4. خط چهار هم جمله را به پایان می‌رساند و اعلام می‌کند دستورات به پایان خود رسیدند و آماده برای دستورات بعدی می‌شوند (اگر موجود داشته باشد).

     

کد برای حل مشکل Leverage browser caching در .htaccess

حل مشکل کش با متد Expires

کد زیر از نوع متد Expires  است. کد را در بالای فایل .htaccess قرار دهید. و بعد از قرار دادن و ذخیره کردن، تغییرات اعمال شده را بعد از رفرش می توانید مشاهده کنید.

کد یک:

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
## EXPIRES CACHING ##

کد دو:

<IfModule mod_expires.c>

    ExpiresActive on
    ExpiresDefault                                      "access plus 1 month"

  # CSS

    ExpiresByType text/css                              "access plus 1 year"


  # Data interchange

    ExpiresByType application/atom+xml                  "access plus 1 hour"
    ExpiresByType application/rdf+xml                   "access plus 1 hour"
    ExpiresByType application/rss+xml                   "access plus 1 hour"

    ExpiresByType application/json                      "access plus 0 seconds"
    ExpiresByType application/ld+json                   "access plus 0 seconds"
    ExpiresByType application/schema+json               "access plus 0 seconds"
    ExpiresByType application/vnd.geo+json              "access plus 0 seconds"
    ExpiresByType application/xml                       "access plus 0 seconds"
    ExpiresByType text/xml                              "access plus 0 seconds"


  # Favicon (cannot be renamed!) and cursor images

    ExpiresByType image/vnd.microsoft.icon              "access plus 1 week"
    ExpiresByType image/x-icon                          "access plus 1 week"

  # HTML

    ExpiresByType text/html                             "access plus 0 seconds"


  # JavaScript

    ExpiresByType application/javascript                "access plus 1 year"
    ExpiresByType application/x-javascript              "access plus 1 year"
    ExpiresByType text/javascript                       "access plus 1 year"


  # Manifest files

    ExpiresByType application/manifest+json             "access plus 1 week"
    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
    ExpiresByType text/cache-manifest                   "access plus 0 seconds"


  # Media files

    ExpiresByType audio/ogg                             "access plus 1 month"
    ExpiresByType image/bmp                             "access plus 1 month"
    ExpiresByType image/gif                             "access plus 1 month"
    ExpiresByType image/jpeg                            "access plus 1 month"
    ExpiresByType image/png                             "access plus 1 month"
    ExpiresByType image/svg+xml                         "access plus 1 month"
    ExpiresByType image/webp                            "access plus 1 month"
    ExpiresByType video/mp4                             "access plus 1 month"
    ExpiresByType video/ogg                             "access plus 1 month"
    ExpiresByType video/webm                            "access plus 1 month"


  # Web fonts

    # Embedded OpenType (EOT)
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 month"
    ExpiresByType font/eot                              "access plus 1 month"

    # OpenType
    ExpiresByType font/opentype                         "access plus 1 month"

    # TrueType
    ExpiresByType application/x-font-ttf                "access plus 1 month"

    # Web Open Font Format (WOFF) 1.0
    ExpiresByType application/font-woff                 "access plus 1 month"
    ExpiresByType application/x-font-woff               "access plus 1 month"
    ExpiresByType font/woff                             "access plus 1 month"

    # Web Open Font Format (WOFF) 2.0
    ExpiresByType application/font-woff2                "access plus 1 month"


  # Other

    ExpiresByType text/x-cross-domain-policy            "access plus 1 week"

</IfModule>
یکی از کدهای بالا را استفاده کنید یعنی یا کد یک یا کد دو

حل مشکل کش با متد Cache-Control

کد زیر از نوع متد Cache-Control  است. کد را در بالای فایل .htaccess قرار دهید. و بعد از قرار دادن و ذخیره کردن، تغییرات اعمال شده را بعد از رفرش می توانید مشاهده کنید.

<filesMatch ".(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Cache-Control "max-age=84600, public"
</filesMatch>

کد برای حل مشکل Leverage browser caching در Nginx

حل مشکل کش با متد Expires

کد زیر از نوع متد Expires  است. کد را می‌توانید در Nginx قرار دهید. و بعد از قرار دادن و ذخیره کردن، تغییرات اعمال شده را بعد از رفرش می توانید مشاهده کنید.

location ~* \.(jpg|jpeg|gif|png)$ {
expires 365d;
}

location ~* \.(pdf|css|html|js|swf)$ {
expires 2d;
}

 

حل مشکل کش با متد Cache-Control

کد زیر از نوع متد Cache-Control  است. کد را می‌توانید در Nginx قرار دهید. و بعد از قرار دادن و ذخیره کردن، تغییرات اعمال شده را بعد از رفرش می توانید مشاهده کنید.

location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires 2d;
add_header Cache-Control "public, no-transform";
}

نحوه چک کش اعمال شده

شما می‌توانید بعد از اعمال کدهای بالا در سایت خود، کش سایت را توسط مرورگرها بررسی کنید که آیا به درسی تنظیم شده‌اند یا خیر، به این منظور بر روی سایت خود کلیک راست کرده و وارد بخش DevTools گوگل کروم شوید و سپس وارد تب Network شده و سایت خود را دوباره رفرش کنید و یکی از فایل‌های سمت چپ را انتخاب کرده و در سربرگ Response Header کش‌های اعمال شده را مشاهده کنید. البته می‌توانید از ابزارهای آنلاین Gtmetrix هم استفاده کنید.

netword developers tools
netword developers tools

 

نکات تکمیلی:

  1. اگر در لیست شما html یا عکس‌هایی برای یک دوره زمانی در مرورگر کاربر کش می‌شوند به این معنی است که شما اگر خواستید تغییراتی در صفحه اعمال کنید ممکنه خیلی از این تغییرات برای کاربران قابل مشاهده نباشند. این به این علت که کاربران به جای فایل‌های فعلی، به فایل‌های ذخیره شده نگاه می‌کنند یعنی همان کش محلی. البته با روش‌هایی می‌توان این مشکل را رفع کرد که یکی از رایج‌ترین آنها URL fingerprinting است. مثلا شما فرض کنید یک فایل CSS دارید و قصد تغییرات آن را دارید، این فایل قبلا در کش محلی کاربران با نام main.css ذخیره شده است، حال شما تغییراتی در آن فایل CSS اعمال می‌کنید و نام آن main_1.css می‌شود و اگر دوباره تغییراتی اعمال کنید نام به main_2.css تغییر می‌کند. روش URL fingerprinting برای تغییرات ناگهانی مفید است. که در پست رفع خطای Remove query strings from static resources بیشتر درباره این روش صحبت کرده‌ایم.
  2. نکته یک در بالا می‌تواند به شکل دیگری به کمک درخواست‌های شرطی صورت بپذیرد، درخواست‌های شرطی (Conditional requests) درخواست‌هایی هستند که مرورگر می‌تواند از سرور بپرسد که آیا فایل کپی ذخیره شده در کش مرورگر با فایل موجود در سرور فرق دارد یا خیر؟ ایا فایل موجود در سرور دست‌خوش آپدیت و یا تغییرات بوده است یا نه؟ مرورگر اطلاعاتی را که درباره‌ی فایل کپی ذخیره شده در کش را ارسال می‌کند و سرور تعیین می‌کند که آیا فایل اپدیت شده و فایل جدید باید ارسال گردد یا نه همان فایل کپی ذخیره شده در مرورگر است؟ اگر مورد دوم باشد در این حالت وضعیت 304 (HTTP 304 Not Modified status) بازگشت داده می‌شود. ETag یا یا entity tag یک نوع HTTP Header یکی از این نوع درخواست‌های شرطی است. (اطلاعات بیشتر)
    Conditional-requests
    Conditional-requests
  3. توجه داشته باشید که ما چندین نمونه کد خط در این مقاله به شما معرفی کردیم، گاهی ما در پروژه‌های افزایش سرعت سایت پیش می‌آید که برخی کدها با سرور ناسازگار است و ممکن است به خوبی اعمال نشود و یا مشکلاتی را به وجود اورد بنابراین قبل از هر عملی و تغییراتی، حتما بک آپ گرفته شود و سپس کدها را تست و بهترین را برای سایت خود انتخاب نمایید.
  4. به این نکته اشاره کنیم که شما فقط می‌توانید فایل‌هایی را کش کنید که در سرور شما موجود باشد و فایل‌ها در سرورهای دیگر را نمی‌توان کش کرد، همانند Analytics گوگل یا فایل‌های سایت‌های مشابه مانند OneSignal که یک سری فایل را سرورهای خود در سند HTML شما برای اجرا در سایت فراخوانی می‌کنند را نمی‌شود کش کرد.

رفع ارور Leverage browser caching برای Google Analytics

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

Referencing the JavaScript file from Google’s servers ensures that you get access to new features and product updates as they become available, giving you the most accurate data in your reports.

به هر حال یک راه برای تغییر زمان کش فایل جاوا اسکریپت Google Analytics موجود دارد.

Leverage browser caching google analytics
Leverage browser caching google analytics

 

به کمک افزونه  Complete Analytics Optimization Suite به سادگی می‌توانید کش آمارگیر گوگل آنالیتیکس را در لوکال دست خوش تغییرات دهید، این افزونه را از مخزن وردپرس دانلود و نصب کنید و سپس اطلاعات لازم برای چنین عملی مثل Google Analytics Tracking ID را به این پلاگین بدهید، Position of traking code را هم توصیه میکنیم Footer  را انتخاب نمایید و بعد سیو کنید. تغییرات انجام شد و لذت برید 🙂

Locally hosted analytics settings
Locally hosted analytics settings

افزونه کش وردپرس

پیشنهاد ما برای کش کردن در وردپرس استفاده از روش‌های بالا است، چرا که نصب هر افزونه باعث کاهش سرعت سایت وردپرس می‌شود، به هر حال اگر مایل به استفاده ازکدهای بالا نیستید می‌توانید از افزونه‌های زیر برای فعال سازی کش در وردپرس استفاده نمایید.

خطاهای مرتبت با ارور Leverage browser caching را می‌توانید در لیست زیر بررسی کنید و اصولا با خواندن این مقاله خطاهای زیر هم رفع می‌شوند.

سعی شده در این آموزش‌ها با بالا بردن سرعت سایت که یکی از فاکتورهای مهم در سئو می‌باشد، کمک شایانی کنیم، اگر سوالی داشتید حتما در نظرات مطرح کنید. این جلسه از آموزش GTmetrix که مربوط به رفع ارور Leverage browser caching بود، هم به پایان رسید در جلسه بعد به معرفی خطاهای Minify فایل‌ها در pagespeed  گوگل میپردازیم (خطای minify html خطای minify css و خطای minify JS). با ما همراه باشید.

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

رفع خطای Leverage browser caching و هر آنچه که باید درباره کش بدانید
امتیاز 4.4 از 14 رای
برچسب ها

پوریا آریافر

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

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

‫72 نظرها

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

    1. سلام هاجر جان. توی کدها اگر دقت کرده باشی یک عبارتی است مثل ExpiresByType و جلوش نوع فایل نوشته و میتونید براساس MIME types فایل های خاص خودتون رو بهش اضافه کنید.
      ممنونم از حضورت. موفق باشی.

    1. سلام محمد جان.
      نه نمیشه این ارورها رو توی وبلاگ ها رفع کرد. باید دسترسی به هاست داشته باشید و در وبلاگ ها مثل بلاگفا و پرشین بلاگ و بیان و … دسترسی ندارید.

    1. سلام محمدرضا جان. خوشحالم براتون مفید بوده.
      بازم به ما سر بزنید 🙂

  2. سلام
    من از قالب html استفاده میکنم که یک ویدیو mp4 در صفحه ام دارم
    Leverage browser caching خطا میده که انقضا مشخص نشده است، چطور این مشکل رو حل کنم با توجه به اینکه از قالب html استفاده میکنم در هاستم.

    با تشکر

    1. سلام افشار جان. مهم نیست از وردپرس استفاده مکنید و یا جوملا و یا html . بالاخره هاست یک فایل htaccess داره و کد مربوط به این خطا رو در اون قرار بده. درضمن میتونی از آپارات هم برای اشتراک گذاری استفاده کنی.

  3. سلام . وقت بخیر
    در صورتی که از برای تعیین زمان کش یک فایل هر دو روش Cache-Control و Expires استفاده کنیم، آیا حتما باید زمانی که برای کش در نظر گرفته می شود در این دو روش یکسان باشد یعنی تاریخی که برای Expires در نظر گرفته میشه دقیقا باید با زمان Cache-Control که بر حسب ثانیه هست یکسان باشه ؟؟
    اگر متفاوت باشه چی میشه؟؟؟؟

    1. سلام حمید عزیز. همون طور که در مقاله اشاره کردم Cache-Control نسبت به Expires اولویت داره.
      ممنونم از حضورت.

  4. سلام . خسته نباشید.
    سوالی که میپرسم ربطی به این مقاله نداره، ممنون میشم که پاسخ بدید
    سایتم رو که در در اسپید تست گوگل تست می کنم یک ارور به نام Ensure text remains visible during webfont load میده ، اگر ممکنه درباره این ارور ر روشهای رفع آن توضیح بدید

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

  5. سلام
    ممنون بابت آموزش خوبتون
    یک سوالی دارم ک نمیدونم درست متوجه شدم از مقاله یا خیر
    از نظر GTmetrix
    فایل ها باید 1ماه کش بشن توی مرورگر تا ارور نده ؟
    استاندارد مدت زمان کش چقدره ؟

    1. سلام مسعود جان، بستگی داره، مثلا برخی فایل ها هیچ وقت عوض نمیشن و تغییر نمیکنن مثل لوگو و یک سری عکس‌ها و پیشنهاد میشه زمان کش بیشتر باشه ولی برخی فایل ها مثل فایل های ظاهر سایت که در CSS نوشته شده و اگر زیاد تغییر میدیم پیشنهاد میشه کش کمتری داشته باشند. خلاصه برای هر فایل و در هر سایتی این کش‌ها فرق داره.

  6. سلام خسته نباشید
    عزیز شما میگین که فایل های گوگل آنالیز و مربوطه که بیرون از هاست ما هستش رو کش نکنیم حرفتون هم صحیحه، ولی خب وقتی باعث میشه سرعت لود سایت بره بالا چیکار باید کرد؟
    من گوگل آنالیز، گوگل تگ منیجر و طبق معمول افزونه چت انلاین تو کش ها هم هستش و باعث شده سرعت لود سایتم از 3 ثانیه به 6-7 ثانیه تغییر کنه!!!! این زیاده از نظره من حداقل؛ به نظر شما چیکار کنم؟ تگ منیجر رو احتمالا بردارم، اگر افزونه چت آنلاینی هم هست که این مشکل رو به وجود نیاره ممنون میشم معرفی کنید

    1. سلام امید جان. می‌تونید به کمک تگ منیجر سرعت سایت بالا ببرید و کاری کنید چت آنلاین سرعت سایت شما رو کاهش نده. این موضوع مباحث پیشرفته تگ منیجر است و پیشنهاد میشه در گوگل جستجو کنید و یا اگر براتون بسیار مهم است به یک متخصص سئو و یا تگ منیجر بسپارید تا این مورد براتون حل کنه. موفق باشی.

  7. رفع ارور Leverage browser caching برای Google Analytics

    ایا برای رفع مشکل ارور Leverage browser caching برای Google Analytics برای cms اختصاصی شما اموزشی دارید؟ برای وردپرس فقط اموزش دادید

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

      1
      1. سلام مهندس جان وقت بخیر.مهندس یک مشکل داشتم امکان داره کمکم کنید ؟سپاسگذارم
        مشکلم:

        Leverage browser caching 	
        B (87)
        	Leverage browser caching for the following cacheable resources:
        
            netkaala ir/wp-content/cache/autoptimize/css/autoptimize_0d7167015fe11c52eb3a0516e68a158e.css (3 seconds)
            netkaala ir/wp-content/cache/autoptimize/css/autoptimize_3892a2063589eb534c9ff2c9b2d8ac0e.css (3 seconds)
            netkaala ir/wp-content/cache/autoptimize/js/autoptimize_17fe6b613a9205c511e92f84016419bb.js (3 seconds)
        1. سلام عزیز. به خاطر تداخل هایی که دارید این مشکل برخورد کردید. اول کش میشه و بعد ادغام میشه درحالی که باید اول ادغام بشه و بعد کش بشه. ب دنبال این باشید که کدوم افزونه باعث ایجاد این تداخل شده.

          1. مهندس میشه شما راهنمایی کنید من نتونستم پیدا کنم.میگه ارور 3 ثانیه است.یعنی برای منابع استاتیک باید زمان بیشتری برای کش باشه من نمیدونم چکار کنم شا کمکم میکنید بی زحمت

          2. این درخواست شما مثل این میمونه که برید سایت یک پزشک و کامنت بذارید بگید دلدرد دارم، آیا میدونید ۱۰۰ ها دلیل وجود داره که ممکنه شما دلدرد بگیرید؟ طبیعتا پزشک تا نبینه و معاینه نکنه نمیتونه نظر بده. مشکل شما در سایت هم میتونه ۱۰۰ ها دلیل داشته باشه دوستم و نمیشه بدون دسترسی و بدون وقت گذاشتن حل کرد، باید کنجکاو باشید و با خوندن مقاله ها راه حل هایی به ذهن شما بیاد. در کل پیشنهاد میکنم افزونه رو عوض کنید اگر منشا مشکل پیدا نکردید و یا دونه دونه سایر افزونه ها رو غیرفعال کنید و بررسی کنید ببینید مشکل حل میشه یا نه. میتونید با تنظیمات افزونه ها بازی کنید و …

            1
    1. سلام، خوشحالیم مورد استفاده شما قرار گرفته. پیروز و پایدار باشید.

  8. سلام یه سوال من تو قسمت Leverage browser caching
    چند تا فایل mp3 دارم کش شدن که از سایت خودم نیستن
    از سیستم چت آنلاینم هست که سرویس ایرانی هست
    چطور می تونم رفع کنم

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

  9. با عرض سلام
    من از کد دوم قسمت htacess استفاده کردم اما تغییر خاصی مشاهده نکردم //

    میشه بفرمایید دقیقا این کد ها باید در کجای فایل قرار بگیرند ؟ خط خاصی داره //

    ممنون میشم راهنمایی کنید

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

  10. سلام و روزبخیر
    با تشکر از آموزش های بسیار مفید سایت شما
    من از یک هاست ویندوزی با کنترل پنل plesk استفاده میکنم و نمیتوانم فایل .htaccess را پیدا کنم. لطفا راهنمایی کنید که کدهای ذکر شده را در کدام قسمت باید قرار بدهم؟

      1. سلام و روزبخیر
        همونطور که گفتم هاست من ویندوزی هست و وب سرورش هم IIS هست. لینکی که دادید برای سرور لینوکسی هست.
        توی WEB.CONFIG که کدها رو اضافه میکنم سایت از دسترس خارج میشه و خطای 500 میده. لطفا راهنمایی کنید. نمیدونم چیکار کنم

        1. سلام، شما اگر دسترسی به iis دارید این مقاله رو بخونید در انتها گفته باید چه کنید. از طرفی پیشنهاد میشه این موضوع به هاست تیکت بزنید تا براتون انجام بدن.

  11. ## EXPIRES CACHING ##
    IfModule mod_rewrite.c
    RewriteEngine On
    وقتتون بخیر مهندس
    با اینک کد بالا در اول htaccess موجود ,(( کد یک )) شما کارایی داره که اضافه کنم ؟

    1. باید کل کدها دیده بشه. به این صورت که شما گفتید نمیشه نظر قطعی داد.

  12. سلام دوستان عزیز
    این کد اصلا کارایی نداشت میشه راهنمایی کنید

    1. سلام، حتما در سرور شما کارایی نداشته (به دلیل محدودیت) یا به اشتباه استفاده کردید وگرنه خودم بارها در پروژه های افزایش سرعت از همین کدهای موجود در این صفحه استفاده کردم.

  13. سلام
    در gtmetrix در قسمت Leverage browser caching آدرس سایت های دیگر را نمایش میدهد

        https://retain.ir/audio/delivered.mp3 (expiration not specified)
        https://retain.ir/audio/failed.mp3 (expiration not specified)
        https://retain.ir/audio/notification.mp3 (expiration not specified)
        https://retain.ir/audio/submit.mp3 (expiration not specified)
        http://www.google-analytics.com/analytics.js (2 hours)

    برای حل این مشکل باید چه کاری باید انجام داد؟

    1
    1. سلام، پاسخ شما در همین صفحه موجود بود.
      شما فقط فایل هایی رو میتونید کش کنید که در سرور خودتون قرار گرفته باشن، لینک های بالا در سرورهای خارج از سایت شما قرار دارن و این دسترسی رو شما ندارید بخواین تغییراتی در نحوه کش این فایل ها ایجاد کنید.

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

    یه سوال داشتم در مورد leverage browser caching داشتم.

    از یه هاست ویندوزی استفاده میکنم. کد مربوطه ای رو که باید در web.config رو کجا باید پیدا کنم؟

    ممنون میشم یه پیشنهاد بدین

  15. سلام وقت بخیر
    من از هاست ویندوزی استفاده می کنم
    میخوام ارور leverage browser cashing در gtmetrix رفع کنم ولی موردی که هس کد زیر را که در web.config میزارم سایتم ارور 500 میده و دیگه بالا نمیاد!!من چیکار باید بکنم؟

    ممنون از راهنماییتون

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

  16. سلام
    خسته نباشید
    ممنون از مقالات فوق العادتون.
    راستش من افزونه وی پی راکت دارم و به خوبی هم کانفیگ شده. اروری که من میگیرم همین کش هست ولی نه مربوط به سی اس اس یا جاوا اسکریپت ها یا تصاویر و … چون اونا رو وی پی راکت اوکی کرده کدش رو. ارور من مربوط به لینک های اشتراک گذاری پستهای سایت هستش. ممنون میشم راهنمای کنید. این لینک ها:

        https://www.google.com/recaptcha/api.js?hl=fa-IR&ver=4.9.4 (5 minutes)
        https://syndication.twitter.com/settings (10 minutes)
        https://www.googletagmanager.com/gtag/js?id=UA-111731189-1 (15 minutes)
        http://connect.facebook.net/en_US/sdk.js (20 minutes)
        https://apis.google.com/js/plusone.js?ver=4.9.4 (30 minutes)
        https://platform.twitter.com/widgets.js?ver=4.9.4 (30 minutes)
        http://www.google-analytics.com/plugins/ua/linkid.js (1 hour)
        http://www.google-analytics.com/analytics.js (2 hours)
        https://www.google-analytics.com/analytics.js (2 hours)
    1. درود
      شما فقط فایل هایی رو میتونید کش کنید که در سرور خودتون قرار گرفته باشن، لینک های بالا در سرورهای خارج از سایت شما قرار دارن و این دسترسی رو شما ندارید بخواین تغییراتی در نحوه کش این فایل ها ایجاد کنید.

  17. سلام، مرسی بابت مقاله بسیار خوبتون
    یه سوال داشتم من الان یه سایتی به نشانی: yasrebigroup.com دارم ولی خب چون اختصاصی درست شده میخواستم بدونم باید از سمت هاست اقدام کنم یا از طریق تیم طراح سایت؟!

    1. سلام، خواهش میکنم
      از سمت هاست باید اقدام کنید، تیم طراح هم میتونه تنظیمات ساده مربوط به هاست بهینه کنه.

      1
    2. نکته ای رو فراموش کردم بگم، سایت شما به شدت سنگین هست و تقریبا ۴ برابر استاندارد جهانی حجم بالاتری داره، این مورد رو هم بهینه کنید، چرا که در ایران با این نت ضعیف کمتر کاربری میتونه به خوبی از سایت شما استفاده کنه.

      1. درسته متوجه این قضیه هستم چون کلا دارم بر اساس ابزار GTmetrix سایت رو میسنجم مواردی که رو دسترسی دارم میتونم بهینه کنم حالا leverage browser caching یکی از مواردیه که از طریق هاست و تیم طراح باید اقدام کنه!
        اگه نظره دیگه ای بابت افزایش سرعت وب سایت دارین ممنون میشم بگین!
        تشکر

        1. مقالات ما موجود هست و میتونید در جهت افزایش سرعت استفاده کنید.
          موفق و پایدار باشید.

          1. تمام مواردی که از سنجش GTmetrix پیدا کردم رو برای تیم طراح فرستادم. چون از سمت خودم دسترسی کامل ندارم ولی جا داره اینجا تشکر کنم از کل مقالاتی که در زمنیه بهینه و افزایش سرعت از میزفا بدست آوردم. که تونستم سایت دیگه ای رو چند ماه پیش به سرعت بالا برسونم: kohalpack.com

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

  18. سلام آقای آریافر
    نمره این ارور سایتم تو جی تی متریکس 65 بود. اما بعد از اینکه از از راهنمایی و آموزش خوب شما استفاده کردم این ارور رو تونستم برطرف کنم و نمره 100 گرفت. واقعا ممنون از این خدمت رسانیتون به مردم.
    سعی میکنم حتما از دانش شما بهره لازمه رو ببرم.

    1. سلام افشین جان
      خواهش میکنم و خوشحالم مفید بوده، ما در همه مقالات سعی کردیم بهترین روش‌ها رو برای حل مشکلات ارائه بدیم و خب خداروشکر بسیار مورد رضایت دوستان هم قرار گرفته.
      موفق و پایدار باشی.

  19. Woᴡ, awesome blog laуout! How long have you been blogging for?
    you make blogging look easy. The overall lоok oof your web site is wonderful,let alone the content! agensbobetindonesia.net

  20. سلام وقت بخیر من به تازگی از هاست دانلود برای تصاویر و رسانه های سایتم ( وردپرس-ووکامرس) استفاده میکنم و از وقتی که دارم از هاست دانلود استفاده میکنم و تصاویر رو از هاست دانلود در صفحات داخلی و اول فراخوانی میکنه این ارور در جی تی متریکس برای تصاویر موجود در اون صفحه مشاهده میشه باید چیکار کنم که بتونم عملیات کش رو بر روی تصاویر در هاست دانلود اعمال کنم ؟ با تشکر

    1. سلام دوستم، شما کافیه در محل قرارگیری عکس‌های خود در هاست دانلود فایلی با عنوان htaccess ایجاد کنید، توجه داشته باشید که اول این نام باید حتما با نقطه آغاز بشه، به این شکل:

      .htaccess

      بعد یکی از کدهای Expires رو قرار بدید و سیو کنید
      موفق باشید

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

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

  21. با سلام من کد دستوری را در فایل قرار دادم اما بازهم تو جی تی صفر نشون میده کش رو>مشکلم کجاست؟
    من این کد را داخل .htaccess قرار دادم

    ## EXPIRES CACHING ##
    ExpiresActive On
    ExpiresByType image/jpg "access 1 year"
    ExpiresByType image/jpeg "access 1 year"
    ExpiresByType image/gif "access 1 year"
    ExpiresByType image/png "access 1 year"
    ExpiresByType text/css "access 1 month"
    ExpiresByType application/pdf "access 1 month"
    ExpiresByType application/javascript "access 1 month"
    ExpiresByType application/x-javascript "access 1 month"
    ExpiresByType application/x-shockwave-flash "access 1 month"
    ExpiresByType image/x-icon "access 1 year"
    ExpiresDefault "access 2 days"
    ## EXPIRES CACHING ##
    
    1. سلام، دو علت میتونه داشته باشه، یا وب سرور شما از این کدی که قرار دادید پشتیبانی نمیکنه که در این صورت شما می‌تونید از کدهای دیگه که داخل مقاله اشاره شده استفاده کنید، یا اینکه دستورات بازنویسی میشن.
      دستورات دیگه رو تست کنید و اگر مشکل حل نشد خبر بدید تا بیشتر راهنمایی کنم
      موفق باشید

    2. البته این دستوراتی که اینجا درج کردید IfModule نداره و علت اینکه کار نمیکنه میتونه همین باشه، از کدهای معتبر داخل مقاله استفاده کنید

  22. سلام ممنون از سایت خوبتون
    سایت من تو قسمت pagespeed امتیاز 94% رو کسب میکنه ولی yslow 73%
    آموزش های شما تماما در رابطه با pagespeed هستن اگر میشه زودتر به بخش yslow برسید

    1. سلام دوست خوبم، ممنونیم از حضورتون
      توجه داشته باشید که بسیاری از فاکتورهای Pagespeed با Yslow یکی هست ولی با ادبیات‌های مختلف، هر چند ما در اینده به فاکتورهای Yslow هم می‌پردازیم.

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

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

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

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

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