«یک افزونۀ کش نصب کردم ولی سایت سریع‌تر نشد!» — این جمله را ماهانه چند بار می‌شنوم، و تقریباً همیشه دلیلش یکی از این سه است: کشِ غلط برای هاستِ غلط، تنظیماتِ پیش‌فرضِ دست‌نخورده، یا گلوگاهِ واقعی‌ای که اصلاً کش نیست. حقیقتی که تبلیغات نمی‌گویند: افزونۀ کش، موتورِ سرعت نیست؛ پلِ نجاتِ سرعت است — از «وردپرسِ داینامیک در هر بازدید» به «فایلِ استاتیکِ آماده». اگر سقفِ سرعت را قالب و هاست تعیین کرده باشند (که در «چرا بعضی قالب‌ها کند می‌کنند» نشان دادم)، کش همان چیزی است که تا آن سقف را بالا می‌راند — ولی سقف را جابه‌جا نمی‌کند. در این مقاله، «بهترین افزونه‌های کش وردپرس» را لیست می‌کنم، ولی قبلش سه نوع کش را از هم جدا می‌کنم که بدانید کدام افزونه در کدام زمین بازی می‌کند؛ و آخرش، چک‌لیستِ «قبل‌وبعدِ عددی» را می‌دهم که با آن، هر افزونه‌ای که ادعای سرعت کرد، محاکمه می‌شود.

کش چیست و چه چیزی را نجات می‌دهد؟

وردپرس در هر بازدید، کارخانه به راه می‌اندازد: PHP اجرا می‌شود، دیتابیس کوئری می‌خورد، قالب رندر می‌شود، HTML ساخته می‌شود — برای بازدیدِ صدمِ همان صفحه که هیچ چیزش عوض نشده. کش یعنی «اولین نسخه را روی کاغذ بنویس و برای بعدی‌ها همان را بده». این کار بیشترِ هزینه‌های لایۀ PHP و دیتابیس را از بین می‌برد و در TTFB اثر مستقیم دارد — همان عددِ «زمان تا اولین بایت» که مفصل در تأثیر TTFB بر سرعت بارگذاری باز کرده‌ام. اما دقت کنید چه چیزی را نمی‌گیرد: بایت‌های CSS/JS که قالب و افزونه‌ها به صفحه تزریق می‌کنند با کش هم سرِ جایشان‌اند؛ به همین دلیل است که کش، خواهرِ قالب سبک است نه جانشینش — و اگر پروندۀ کندی‌تان لایۀ فایل است، نقشۀ تأثیر افزونه‌ها بر سرعت را بخوانید نه این را.

افزونۀ کش مثل ژنراتورِ برق‌گرفتگی است: وقتی شبکه (هاست و قالب) ضعیف است، نجاتت می‌دهد؛ ولی هیچ‌کس به‌خاطر ژنراتور، سیم‌کشیِ ساختمان را درست نمی‌کند.

سه نوع کش که باید از هم تشخیص دهید

هرچه در ادامه می‌خوانید به این تفکیک برمی‌گردد؛ اکثر «افزونۀ کش نصب کردم فایده نداشت»ها از به‌هم‌ریختنِ این سه است:

  • کشِ صفحه (Page Cache): همتای HTMLِ آماده — ستون فقراتِ هر افزونۀ کش. اثرش آنی روی TTFB و بارِ CPU. هر افزونۀ کشِ محترمی اول این را می‌دهد.
  • کشِ مرورگر (Browser Cache): به فایل‌ها (تصویر، CSS، JS) «تاریخِ انقضا» می‌دهد تا بازدیدکنندۀ برگشتی، دوباره دانلود نکند. دومین ستون — و اولین قربانیِ تنظیمِ غلط در آپدیت‌ها، چون نسخه‌ی کهنهٔ فایل را به کاربر نشان می‌دهد.
  • کشِ آبجکت (Object Cache): نتایجِ کوئری‌های دیتابیس را نگه می‌دارد (Redis/Memcached). ستون سوم که بیشترِ افزونه‌های رایگان ندارندش؛ روی ووکامرس و پیشخوان، تفاوتش غافلگیرکننده است.

بعضی افزونه‌ها (Autoptimize و هم‌خانواده‌هایش) اصلاً کش نیستند؛ «بهینۀ فایل»‌اند — minify، ترکیب، deferِ JS. جای درستِ آن‌ها کنارِ کش است نه به‌جایش. تفکیکِ این خانه‌ها را در بهینۀ سرعت سایت چیست و راهنمای افزایش سرعت وردپرس کشیده‌ام؛ این مقاله خانهٔ «کش» را مبلمان می‌کند.

۱. WP Rocket: پول بده، سریع تمام کن

انتخابِ پیش‌فرضِ من برای سایتی که صاحبش نمی‌خواهد مهندس بشود. رابطش طوری ساخته شده که «هیچ‌کاری نکردن» هم درست کار کند: کشِ صفحه با پیش‌فرضِ هوشمند فعال است، فایل‌ها را ترکیب/فشرده می‌کند، تصاویر را lazy-load و فونت‌های بیرونی را به‌تأخیر می‌اندازد — و همه با زبانه‌های ساده. در پروژه‌های مشتری‌ای که «فقط سریع شود» می‌خواهند، با تنظیمِ پیش‌فرض + سه تیک اضافه، به نتایجِ تمیز می‌رسم. دو تذکر: اول — پولیِ تمام‌عیار است و لایسنسِ سالانه دارد؛ برای سایتِ شخصیِ صرفه‌جو، LiteSpeedِ رایگان روی هاستِ LiteSpeed همان کار را می‌کند. دوم — جادوی «فایل‌ها» (defer JS، حذفِ CSS بلااستفاده) روی قالب‌های بدکد، صفحه را می‌شکند؛ همان‌قدر که در کالبد کندی قالب گفتم «بهینۀ بیرونی روی مسیر غلط، ضرر را عقب می‌اندازد»، این‌جا هم باید مرحله‌مرحله روشن کنید و تست بگیرید. مقایسه‌اش با کهنه‌سربازِ رایگانِ بعدی را در WP Rocket در برابر W3 Total Cache با جزئیات باز کرده‌ام.

۲. LiteSpeed Cache: سلطانِ هاست‌های LiteSpeed

اگر هاست‌تان سرورِ LiteSpeed دارد (بیشترِ پلن‌های وردپرس‌محورِ ایرانی و خارجی)، این افزونه بی‌رقیب است — چون کشِ صفحه را در سطحِ خودِ سرور می‌سازد، قبلِ رسیدن به PHP؛ یعنی عملاً رایگان، جلوتر از خیلی پولی‌ها. به‌علاوه: بهینۀ CSS/JS، lazy-load تصویر، و کشِ آبجکت با Redis/Memcached در همان بسته. تجربه‌ام دو روی سکه را نشان می‌دهد: روِ طلایی — سایت‌هایی که از کشِ معمولی به LSC مهاجرت کردند، TTFB را به نصفِ نیمه رساندند. روِ تلخ — پنلِ تنظیماتش برای مبتدی «فرودگاه» است؛ چهلِ زبانه، و گزینه‌هایی مثل «Cache » با اسم‌های فنی؛ یک تیکِ اشتباهِ «Guest Mode» یا exclude، کل کش را بی‌اثر می‌کند و صاحب سایت ماه‌ها نمی‌فهمد چرا. قانونِ من: فقط پروفایل‌های آماده (Basic/Advanced) را بزن، بقیه را دست نزن، و اگر ووکامرس داری حتماً فهرستِ «صفحاتِ استثنا» (سبد/تسویه/حساب) را چک کن. پایه‌های انتخابِ هاستِ درست را در بهترین هاست وردپرس نوشته‌ام؛ همان‌جا گفتم کشِ سرور، بزرگ‌ترین تفاوتِ نامرئیِ دو هاستِ هم‌قیمت است.

۳. W3 Total Cache: کهنه‌سربازِ رایگانِ پرجرات

قدیمی‌ترین غولِ رایگان، و هنوز بر سرِ دو چیز بی‌نظیر: عمقِ تنظیم (هر نوع کشِ ممکن — صفحه، مرورگر، آبجکت، دیتابیس، CDN) و حوصلهٔ سرِ‌انگشتی‌بودن. اگر آدمِ فنی باشید و وقت، W3 روی هر هاستی کار می‌کند و رقابتی ندارد. اگر نباشید، همان W3 سایتتان را با تنظیمِ نادرست می‌خواباند — بدترین شهرتش هم از همین‌جاست: «نصب کردم، سایت پرید». بررسیِ کامل‌ترش را در نقد و بررسی W3 Total Cache نوشته‌ام. تجربهٔ شخصی: در سایتِ سازمانیِ پشتِ فایروالِ ایرانی که LSC ممکن نبود، W3 با object-cacheِ Redis، پیشخوانِ ۶۰نفره را نجات داد؛ همان سایت با WP Rocketِ «فشرده‌ساز» گیرِ ریدایرکت می‌خورد. تصمیم‌نامه: W3 = ابزارِ متخصص؛ اگر متخصص نیستید ولی هاست LiteSpeed ندارید، WP Rocket یا کشِ هاست را انتخاب کنید.

۴. کش‌های الحاقیِ هاست (SiteGround/Hostinger/سرورهای ایرانی)

رقیبی که هیچ‌کس در فهرست‌ها نمی‌بیند چون افزونهٔ مستقل نیست: لایۀ کشِ خودِ هاست/پنل. SiteGround با SuperCacher، Hostinger با همتایش، و کلی هاست ایرانیِ cPanel‌محور با افزونۀ اختصاصیِ کشِ سرور — این‌ها کش را بیرونِ PHP می‌گیرند و عملاً رقبۀ LiteSpeed‌اند. نکتهٔ عملی که زیاد تکرار می‌شود: روی این هاست‌ها، اول کشِ هاست را درست تنظیم کن، بعد سراغ افزونه برو؛ «دو کشِ روی هم» (افزونه + سرور) در بدترین حالت، دو بار invalidation می‌سازد و در بهترین، افزونۀ شما فقط مصرفِ CPU بی‌دلیل است. اگر پنلتان را نمی‌شناسید، «cPanel چیست» را بخوانید تا بفهمید گزینه‌های کشِ سرور کجا پنهان‌اند — راهنمای کار با cPanel نقشهٔ مسیر است. تصمیم‌نامهٔ این بخش: اگر هاست‌تان کشِ سروری دارد و راضی‌تان کرده، احتمالاً به افزونۀ کشِ بزرگ نیاز ندارید؛ افزونه را برای دو چیزِ باقی‌بمانده نگه دارید: بهینۀ فایل و کشِ آبجکت.

جدول مقایسه و انتخاب بر اساس سناریو

سناریوانتخابدلیل یک‌خطی
هاست LiteSpeed + بودجه صفرLiteSpeed Cacheکش سروری، کامل، رایگان
هاست cPanel معمولی، می‌خواهم زود تمام شودWP Rocketپیش‌فرض‌های هوشمند، صفر تنظیم
متخصص، هاستِ خاص، کنترل کاملW3 Total Cacheهر نوع کش، هر نوع سرور
هاست کشِ اختصاصی دارد (SG/Hostinger/ایرانی)همان + افزونۀ «فایل‌بهینه»دو کش روی هم = مالیات بی‌دلیل
ووکامرسِ جدیLSC یا Rocket + object cacheاستثنای سبد/تسویه و کش کوئری سبد

و برای فروشگاه‌ها یک تذکرِ معمارانه: کشِ صفحه، سبد خرید را نباید ببلعد؛ فهرست استثناها را همان روزِ اول بسازید — سیاست‌های هاست‌فروشگاهیِ درست را در انتخاب هاست برای فروشگاه نوشته‌ام. برای سئو هم یادآوری کنم: سایت کند، در CWV جریمه می‌شود و کش، همان‌جا برگشت سرمایه‌اش را نشان می‌دهد — چرخۀ «سئو ← سرعت» در سئو چیست و سئوی درون‌صفحه آمده.

تنظیمات امنِ روزِ اول

بعد از نصب، این شش کار را به‌همین ترتیب انجام دهید؛ هرکدام از یک صحنۀ خرابیِ واقعی متولد شده:

  1. فقط کشِ صفحه را روشن کنید؛ بقیه را هفتهٔ دوم. ترکیبِ CSS+JS با lazy-load همه‌چیز در شب اول، فرمولِ شکست است. یک متغیر در هر زمان.
  2. صفحاتِ پویا را مستثنی کنید: سبد، تسویه، حساب کاربری، هر endpointِ لاگین‌دار. پیش‌فرض‌ها معمولاً این‌ها را بلدند، ولی چشم‌بسته باورشان نکنید — خودتان چک کنید.
  3. نسخۀ فایل‌ها (version/query-string) را فعال نگه دارید، نه «max expire» بدون نسخه؛ وگرنه هر آپدیت قالب، کاربرِ برگشتی را با CSSِ کهنه می‌خواباند.
  4. پاک‌سازیِ خودکار هنگام انتشار نوشته (purge on publish) را روشن کنید — وگرنه مشتریِ شما دو روز، سایتِ دیروز را می‌بیند و حق دارد عصبانی باشد.
  5. کشِ موبایل جدا (Mobile Cache) را اگر قالب‌تان ریسپانسیوِ درست دارد خاموش بگذارید؛ نسخه‌های قدیمیِ «قالبِ موبایل جدا» تنها جا هستند که لازم‌اند.
  6. پیش از هر فعال‌سازیِ «بهینۀ فایل»، سه صفحۀ اصلی را دستی باز کنید: خانه، نوشته، فرم تماس. کش‌سازهای بی‌رحم، JSِ فرم را هم defer می‌کنند و فرم «سالم ولی بی‌جان» می‌ماند — خطاهای JSِ بعد از بهینگی را چطور پیدا کنید در «عیب‌یابی خطاهای JS در کنسول مرورگر» توضیح داده‌ام؛ مرورگر و ابزارهایش را هم در «افزونه‌های مرورگرِ ضروریِ توسعه‌دهنده» معرفی کرده‌ام.

وقتی کش می‌شکند: سه صحنۀ کلاسیک

افزونۀ کش فقط وقتی سریع است که درست بشکند؛ سه سناریویی که در پشتیبانی تکرار می‌شوند و درمان‌شان:

  • «تغییراتم اعمال نمی‌شود» — کشِ صفحه هنوز نسخهٔ دیروز را می‌دهد. درمان: purge دستی از نوارِ ابزار، چکِ «پاک‌سازی هنگام انتشار»، و اطمینان از این‌که افزونۀ شما با لاگینِ فعلی، کش را دور می‌زند (قانونِ سلام: کاربرِ لاگین‌کرده نباید کش‌خورده ببیند — اکثر کش‌سازها این را بلدند ولی افزونۀ سفارشیِ لاگینِ شما ممکن است cookieها را گم کند).
  • «فرم/سبد خرید از کار افتاده» — کشِ صفحه، nonceهای امنیتی را هم منجمد کرده. درمانِ درست، حذفِ افزونه نیست؛ «استثنایِ endpoint» و در ووکامرس، حالت AJAX/Fragment Cache است. اگر هنوز گیر دارید، پروندۀ «عیب‌یابیِ گام‌به‌گام کندی و خرابی» در رفع مشکلات سرعت سایت راهِ تشخیص را نشان می‌دهد.
  • «کاربرِ برگشتی CSSِ کهنه می‌بیند» — کشِ مرورگر با Expiresِ بلند و بدونِ version-stamp. درمان: فعال‌کردنِ query-string در فایل‌ها؛ و برای اطمینان از حل‌شدن، تستِ hard-refresh در کنسول مرورگر — همان ابزارهایی که در «افزونه‌های مرورگر توسعه‌دهنده» معرفی کرده‌ام.

و تذکرِ امنیتیِ همیشگی: کشِ عمومی یعنی «صفحهٔ یک نفر، به دیگری هم تحویل می‌شود»؛ اگر سایتتان عضویت/نقش/سبد دارد، policyِ Vary/Cookie را از پیش‌فرضِ افزونه نگیرید — همان تفکیکِ نیاز/قابلیت که در هفت نیاز ضروری گفتم، اینجا با صورتِ امنیتی برمی‌گردد؛ راهنمای امنیتِ مبتدیان هم در امنیت وردپرس است.

تست قبل‌وبعد: عدد یا افسانه؟

و پروندۀ محاکمه؛ روشِ من برای این‌که هر ادعای سرعتی — از افزونه، از CDN، از هاست — با عدد بسنجد نه با حس:

  1. پنج عدد، سه صفحه، دو تکرار: TTFB، LCP، بایت‌ها، درخواست‌ها، و CPUِ پنل هاست — روی خانه/نوشته/دسته، قبل و بعد، هر بار دو اجرا؛ ابزارهایش در معرفی ابزارهای تست سرعت.
  2. تستِ «دومین بازدید» جدا از «اولین»: کشِ صفحه، بازدیدِ اول را سریع نمی‌کند — کسی که برای بارِ دوم می‌آید باید اندازه گرفته شود؛ همین دو عدد را که یکی بکنید، فریبِ «بهینگی» را می‌خورید.
  3. سنجشِ مستقیمِ کش از سربرگ: هدرِ x-litespeed-cache یا cf-cache-status به شما می‌گویند HIT است یا MISS؛ بدونِ این هدر، تمامِ اعدادِ تست حدس‌اند. اگر CDN هم در کار است، اثرِ کشِ افزونه از CDN جدا کنید — نقش CDN در سرعت پروندهٔ جدا دارد و راه‌اندازی CDN در وردپرس هم روشِ چیدمانش را.
  4. عددِ مرجع را بعداً هم نگاه کنید: هر سه ماه یک‌بار، همان پنج عدد؛ کش‌های بی‌صدا «می‌میرند» — افزونۀ امنیتیِ تازه، کش را از کار می‌اندازد و هیچ‌کس متوجه نمی‌شود تا کمپینِ بعدی.
هیچ افزونه‌ای را به حرفِ تبلیغِ خودش نمی‌سنجیم؛ به فاصلۀ دو هدرِ x-cache. هرچه بقیه بگوید، HIT جواب است.

جمع‌بندی

بهترین افزونه‌های کش وردپرس در سه جمله: اگر هاست‌تان LiteSpeed است، LiteSpeed Cache (رایگانِ کامل)؛ اگر می‌خواهید بدونِ تنظیم سریع تمام شود، WP Rocket (پولیِ مرتب)؛ اگر متخصصید و کنترلِ هرلایه می‌خواهید، W3 Total Cache (رایگانِ پرجرات) — و اگر خودِ هاست کشِ سروری دارد، اول همان را تنظیم کنید بعد سراغ افزونه بروید. اما فرمولِ واقعیِ سرعت سه ضریب است: قالبِ سبک، هاستِ درست، و کشِ تنظیم‌شده؛ کش تنها ضریبی است که این‌جا انتخابش دستِ شماست، پس عددی انتخابش کنید: پنج عددِ قبل‌وبعد، هدرِ HIT، و پایشِ فصلی. قدمِ امشب‌تان: همین حالا از صفحهٔ اصلیِ سایتتان هدرِ پاسخِ سرور را در Network نگاه کنید؛ اگر cache: MISS/HIT هیچ‌کدام را نمی‌بینید، افزونۀ فعلی‌تان احتمالاً یا نیست یا می‌میرد — تجربه‌تان از «صحنۀ خرابیِ کشِ خودتان» را در دیدگاه بنویسید؛ فهرست را با سناریوهای واقعیِ جامعهٔ وردپرس فارسی کامل می‌کنم. 🧊