رفع خطای leverage browser caching در وردپرس



اگر سرعت سایت خود را با ابزارهایی مانند GTmetrix یا Google PageSpeed Insights تحلیل کرده باشید، به احتمال زیاد با هشدار “Leverage browser caching” یا “Serve static assets with an efficient cache policy” مواجه شده‌اید. این یکی از رایج‌ترین و در عین حال مهم‌ترین بهینه‌سازی‌هایی است که می‌توانید برای افزایش چشمگیر سرعت بارگذاری سایت، بهبود تجربه کاربری و رتبه سئو خود انجام دهید.

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

 

کش مرورگر (Browser Caching)چیست و دقیقا چگونه کار می‌کند؟

کش مرورگر را مانند یک “کارت عضویت کتابخانه” برای وب‌سایت‌ها در نظر بگیرید. وقتی برای اولین بار از سایتی بازدید می‌کنید، مرورگر شما تمام فایل‌های ثابت آن (لوگو، تصاویر، فایل‌های CSS و JavaScript) را دانلود می‌کند، درست مانند اینکه برای اولین بار به کتابخانه می‌روید و تمام کتاب‌های مورد نیازتان را پیدا می‌کنید.

حالا اگر کش مرورگر فعال باشد، سرور به مرورگر شما یک “کارت عضویت با تاریخ انقضا” می‌دهد. در بازدید بعدی، مرورگر به جای اینکه دوباره تمام مسیر را تا سرور طی کند، به سادگی از “کتاب‌های” ذخیره شده در حافظه محلی خود استفاده می‌کند. این فرآیند، سرعت بارگذاری را برای کاربران بازگشتی به شدت افزایش می‌دهد.

 

روش اول: استفاده از افزونه کش (راه حل ۹۹٪ کاربران)

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

محبوب‌ترین افزونه‌ها در این زمینه عبارتند از:

  • WP Rocket (پولی): یکی از بهترین افزونه‌ها که به محض فعال‌سازی، قوانین بهینه کش مرورگر را اعمال می‌کند.
  • LiteSpeed Cache (رایگان): اگر وب‌سرور شما LiteSpeed باشد، این افزونه بهترین عملکرد را خواهد داشت.
  • W3 Total Cache (رایگان): یک افزونه قدرتمند. برای فعال‌سازی، به بخش “Browser Cache” در تنظیمات افزونه رفته و آن را فعال کنید.

 

روش دوم: تنظیم دستی سرور (برای کنترل کامل)

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

 

آشنایی با هدرهای کش: Expires و Cache-Control

 

  • Expires: یک هدر قدیمی‌تر است که به سادگی یک تاریخ انقضای مشخص برای یک فایل تعیین می‌کند.
  • Cache-Control: هدر مدرن‌تر و بسیار انعطاف‌پذیرتر است. با آن می‌توانید علاوه بر زمان انقضا (با `max-age`)، رفتار کش را نیز مشخص کنید (مثلا `public` یا `private`). بهترین کار، استفاده همزمان از هر دو برای حداکثر سازگاری است.

 

۱. برای وب‌سرور آپاچی (Apache) و لایت اسپید (LiteSpeed)

کد زیر را به فایل .htaccess در ریشه سایت وردپرسی خود اضافه کنید:

<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 1 month"
  ExpiresByType image/jpg "access plus 1 year"
  ExpiresByType image/jpeg "access plus 1 year"
  ExpiresByType image/png "access plus 1 year"
  ExpiresByType image/gif "access plus 1 year"
  ExpiresByType image/webp "access plus 1 year"
  ExpiresByType image/svg+xml "access plus 1 year"
  ExpiresByType image/x-icon "access plus 1 year"
  ExpiresByType text/css "access plus 1 month"
  ExpiresByType text/javascript "access plus 1 month"
  ExpiresByType application/javascript "access plus 1 month"
  ExpiresByType application/x-font-woff "access plus 1 year"
</IfModule>

۲. برای وب‌سرور Nginx

 

کد زیر را در فایل پیکربندی سایت خود (معمولا در /etc/nginx/sites-available/your-domain.conf) و داخل بلاک server { ... } قرار دهید.

location ~* \.(jpg|jpeg|png|gif|webp|ico|css|js|woff|woff2|ttf|eot|svg)$ {
    expires 1y;
    add_header Cache-Control "public, no-transform";
}

پس از اضافه کردن کد، فراموش نکنید که Nginx را با دستور sudo systemctl restart nginx ری‌استارت کنید.

 

 

عیب‌یابی پیشرفته: مشکل اسکریپت‌های خارجی (Third-Party)

گاهی اوقات پس از انجام تمام مراحل بالا، ابزارهایی مانند GTmetrix همچنان در مورد برخی فایل‌ها به شما هشدار می‌دهند. این فایل‌ها معمولا از دامنه‌هایی غیر از دامنه شما بارگذاری می‌شوند، مانند:

  • اسکریپت Google Analytics (google-analytics.com)
  • فونت‌های گوگل (fonts.gstatic.com)
  • اسکریپت‌های تبلیغاتی یا پیکسل فیسبوک

نکته مهم: شما هیچ کنترلی بر روی هدرهای کش فایل‌هایی که روی سرور دیگران قرار دارند، ندارید. بنابراین، شما نمی‌توانید این هشدار را برای اسکریپت‌های خارجی به صورت مستقیم برطرف کنید.

 

راه حل چیست؟

  1. میزبانی محلی (Local Hosting): برای فایل‌هایی مانند فونت‌های گوگل، می‌توانید آن‌ها را دانلود کرده و مستقیما از روی سرور خودتان میزبانی کنید. افزونه‌هایی مانند “OMGF” می‌توانند این کار را برای شما خودکار کنند.
  2. به حداقل رساندن اسکریپت‌ها: بررسی کنید که آیا واقعا به تمام اسکریپت‌های خارجی نیاز دارید یا خیر.

 

قدم نهایی: تست و تایید تغییرات

 

پس از اعمال تغییرات، کش سایت خود (از طریق افزونه کش) و کش مرورگر خود را به طور کامل پاک کنید. سپس به GTmetrix یا Google PageSpeed Insights برگردید و دوباره سایت خود را تحلیل کنید. هشدار مربوط به کش مرورگر باید برای تمام فایل‌های روی دامنه شما برطرف شده باشد.