این مقاله بهصورت گامبهگام و کاربردی، به آموزش پیکربندی و بهینهسازی کش لایتاسپید (LiteSpeed) میپردازد. مخاطبان این مقاله، مدیران سرورها، توسعهدهندگان وب و صاحبان سایتهایی هستند که به دنبال افزایش چشمگیر سرعت بارگذاری و بهبود عملکرد وبسایت خود هستند. در این آموزش، ابتدا به نصب و فعالسازی افزونه کش لایتاسپید پرداخته و سپس مراحل ضروری پیکربندی آن شامل تنظیمات کش در سطح صفحه (Page Cache)، کش برای عموم (Public Cache)، حذف کوئریاسترینگهای غیرضروری و تعیین انقضای کش برای انواع محتوا بهطور مفصل شرح داده میشود. در نهایت، روشهای مانیتورینگ و عیبیابی عملکرد کش جهت اطمینان از صحت اجرا ارائه میگردد.
با بهکارگیری راهکارهای این مقاله، میتوان به حداکثر کارایی کش لایتاسپید دست یافته و کاهش محسوس زمان بارگذاری صفحات و همچنین کاهش مصرف منابع سرور را تجربه کرد.
چرا کش لایت اسپید؟
- بهینه سازی خودکار تصاویر ، CSS و JS
- پشتیبانی از Full Page Cache
- سرعت بالا و مصرف کم منابع
- پشتیبانی از WebP – AMP. وPush/Prefetch
تنظیمات اصلی کش لایت اسپید
قسمت های مهم تب تنظمیات عمومی در کش لایت اسپید به شرح زیر است:
۱-انتخاب حالت روشن در ارتقاء خودکار: دلیل این امر ارتقای خودکار افزونه است. در اینجا من به علت محدودیت های منابع هاست و شبکه این مورد را بر روی خاموش تنظیم کرده ام تا خودم شخصا و طبق یک برنامهریزی زمانی ارتقای افزونه ها را انجام دهم.
۲-گزینه مهم دیگر حالت مهمان است که باید روشن باشد.
⚠️ فقط کاربران مهمان (غیرلاگین) کش میشوند.
⚠️ کاربران لاگین شده (مدیر، نویسنده و …) همیشه نسخه جدید ببینند.
⚠️ اگر سایت شما محتوای شخصیسازی شده داره (مثلاً سبد خرید)، این گزینه ضروری است.
۳-بهینه سازی مهمان (Guest Mode Optimization)
این گزینه باعث میشود حتی برای کاربران لاگین شده، محتوای اصلی صفحه از کش سریع و ثابت مهمان بارگذاری شود، و سپس المان های مخصوص کاربر لاگین شده (مثل نوار ادمین، نام کاربری و…) را به صورت غیرهمزمان (Async) و توسط JavaScript به صفحه تزریق (Inject) کند.
تنظیمات زیرمنوی cache
براساس گزارشات تعدادی از وب مستران داخلی و خارجی تنظیم صحیح و اصولی آیتم های این بخش از افزونه کش لایت اسپید (LiteSpeed cache) کمک بسیار شایانی هم در عملکرد وب سایت و هم در تجربه موتورهای جستجو دارد. طبق گزینه های موجود در تصویر انتخاب دکمه روشن در همه آیتم های موجود می تواند ضروری و مفید باشد.
✅در خصوص RestAPI باید بدانیم که:
- یک رابط برنامهنویسی (API) در وردپرس است که به برنامههای خارجی (مثل اپلیکیشن موبایل) یا المانهای داخلی سایت (مثل بلوکهای گوتنبرگ) اجازه میدهد به دادههای وردپرس دسترسی داشته باشند و آنها را تغییر دهند بدون اینکه لازم باشد صفحه کامل بارگذاری شود. فعال کردن این گزینه فقط در صورتیکه در سایت شما اتصال با API فراهم است مفید می باشد.
✅ کش صفحه ورود
به طور پیشفرض، صفحه لاگین به دلیل مسائل امنیتی هرگز کش نمیشود زیرا حاوی توکنهای امنیتی (nonce) است و باید پویا باشد اما، لایت اسپید با یک تکنیک هوشمند، اجزای استاتیک این صفحه (مانند CSS، JS، فونتها و پسزمینه) را کش میکند.
- توجه: هسته اصلی صفحه (فرم و منطق ورود) همچنان پویا و امن باقی میماند. این گزینه فقط فایلهای استاتیک را بهینه میکند.
✅در خصوص کش موبایل:
ابتدا بهتر است این چالش را درک کنیم که: گوگل و کاربران، نسخه موبایل و دسکتاپ یک سایت را دو تجربه مجزا در نظر میگیرند. ممکن است قالب شما برای موبایل و دسکتاپ محتوای متفاوتی را نشان دهد (مثلاً با استفاده از @media در CSS).
مشکل کش قدیمی: اگر کش فقط یک نسخه از صفحه را ذخیره کند، ممکن است به کاربر موبایل، نسخه دسکتاپ را نشان دهد یا برعکس!
راهحل LiteSpeed (فعال کردن Mobile Cache):
با فعال کردن این گزینه، سیستم کش لایت اسپید:
۱-درخواست کاربر را بررسی میکند.
۲-اگر کاربر با دسکتاپ وارد شود، نسخه دسکتاپ صفحه را از کش به او نشان میدهد.
۳-اگر کاربر با موبایل وارد شود، یک نسخه کاملاً جداگانه از همان صفحه که برای موبایل بهینه شده است را از کش به او نشان میدهد.
- توجه:
کاربران موبایل و دسکتاپ هر دو سریعترین و مرتبطترین نسخه ممکن از سایت شما را دریافت میکنند. این برای سئو (ایندکس صحیح توسط گوگل) و تجربه کاربری (UX) بسیار مهم است.
تنظیمات TTL
TTL مدت زمانی است که یک نسخهٔ کششده از یک صفحه یا منبع (مانند CSS، JS) قبل از اینکه منقضی شده و حذف شود، در حافظه کش ذخیره میماند. پس از اتمام این زمان، درخواست بعدی کاربر باعث میشود سرور دوباره یک نسخه تازه از صفحه را از وردپرس تولید کرده و در کش ذخیره کند. در ادامه بخش TTL افزونه کش لایت اسپید را بررسی می کنیم:
۱- کش عمومی پیشفرض(Default Public TTL)
این مدت زمان را برای تمام صفحاتی که برای کاربران مهمان (لاگین نکرده) کش میشوند، تعیین میکند. این شامل صفحات اصلی، نوشتهها، محصولات، دستهبندیها و… میشود.
مقدار پیشنهادی: 1 روز (86400 ثانیه) نقطه شروع خوبی برای اکثر سایتها است. برای سایتهای پرترافیک یا با محتوای نسبتاً ثابت میتوان آن را افزایش داد.
برای بررسی ترافیک و تحلیل رفتار مشاهده کنندگان سایت این مقاله را درخصوص افزونه AWStats مطالعه کنید.
۲-کش خصوصی پیشفرض (Default Private TTL)
این گزینه مدت زمان کش شدن صفحات برای کاربران لاگینشده (مثل مشترکین، مدیران) را کنترل میکند. از آنجایی که این صفحات اغلب حاوی اطلاعات شخصیشده هستند، TTL آن باید کوتاهتر باشد تا اطلاعات به روز نمایش داده شوند
مقدار پیشنهادی: 1 ساعت (3600 ثانیه) یا حتی کمتر. اگر سایت شما محتوای بسیار پویایی برای کاربران لاگینشده دارد، این مقدار را کاهش دهید.
۳- صفحه اول پیشفرض (Front Page TTL)
این گزینه به شما اجازه میدهد TTL جداگانهای برای صفحه اصلی سایت خود تعیین کنید. از آنجایی که صفحه اول معمولاً پویاترین صفحه است (مثلاً آخرین محصولات یا مقالات را نشان میدهد)، ممکن است بخواهید زودتر از سایر صفحات منقضی شود.
مقدار پیشنهادی: میتوانید آن را برابر با کش عمومی قرار دهید یا اگر صفحه اصلی بسیار پویا است، مقداری کوتاهتر (مثلاً 2 ساعت – 7200 ثانیه) برای آن در نظر بگیرید.
۴. خوراک TTL (Feed TTL)
این گزینه مدت زمان کش شدن خوراک (فید) RSS سایت شما را کنترل میکند. افرادی که از فید RSS سایت شما استفاده میکنند، مطالب را در readerهای خود دریافت میکنند.
مقدار پیشنهادی: 1 ساعت (3600 ثانیه) یا کمتر. از آنجایی که کاربران RSS انتظار دارند جدیدترین مطالب را سریع ببینند، TTL کوتاه مناسب است.
۵- REST TTL
این گزینه مدت زمان کش شدن پاسخهای REST API وردپرس را مشخص میکند. اگر از بلوکهای گوتنبرگ modern استفاده میکنید یا اپلیکیشنی به API سایت شما متصل است، کش کردن آن میتواند بار سرور را drastically کاهش دهد.
مقدار پیشنهادی: 1 ساعت (3600 ثانیه) یک مقدار متعادل است. اگر دادههای API شما بسیار پویا هستند، این مقدار را کاهش دهید.
تنظیمات پاکسازی یا Purge در کش لایت اسپید
این تب مشخص میکند که کدام بخش از کش و در چه زمانی به صورت خودکار پاک شود تا محتوای تازه به کاربر نشان داده شود. درک این تنظیمات برای جلوگیری از نمایش محتوای قدیمی بسیار حیاتی است.
۱- پاکسازی همه هنگام ارتقاء :
هر زمان که وردپرس، پوسته یا یک افزونه را ارتقا (آپدیت) میدهید، به صورت خودکار تمامی کشِ سایت پاکسازی (Purge) شود.
چرا مهم است؟ زیرا آپدیتها often باعث تغییر در ظاهر سایت، CSS، JS یا عملکرد backend میشوند. اگر کش پاک نشود، کاربران ممکن است با errors یا ظاهر شکسته مواجه شوند.
توجه:این گزینه **همیشه باید فعال باشد**. این یک تنظیم ایمن و ضروری است.
۲-قوانین پاکسازی خودکار برای انتشار یا بروزرسانی (Automatic Purge Rules for Posts/Pages)
این بخش هسته اصلی هوشمندی LiteSpeed Cache است. شما مشخص میکنید که وقتی یک محتوای جدید را انتشار میدهید یا یک محتوای موجود را ویرایش میکنید، علاوه بر خود آن صفحه، **کدام صفحات مرتبط دیگر نیز باید پاکسازی شوند**.
✅ توصیه: همه این گزینهها را فعال کنید (به جز مواردی که مطمئنید نیاز نیست). این آیتم تضمین میکند که هر تغییر کوچکی در سایت، به درستی در تمام بخشهای مربوطه reflect میشود و کاربران محتوای قدیمی را نمیبینند.
۳- (Older Service) / پاکسازی ساعتی (Scheduled Purge)
این بخش یک سیستم پاکسازی زمانبندی شده است. حتی اگر هیچ تغییری در سایت اتفاق نیفتد، کش صفحاتی که به اندازه مشخصی (مثلاً ۲۴ ساعت) عمر کردهاند را به صورت خودکار پاک میکند. این گزینه اطمینان مضاعفی ایجاد میکند که هیچ داده کهنهای برای مدت خیلی طولانی در کش نمیماند.
چرا این گزینه ممکن است لازم باشد؟ برای صفحاتی که به صورت خیلی نامحسوس بهروز میشوند (مثلاً یک ویجت سایدبار که از یک منبع خارجی داده میگیرد) ولی در رویدادهای انتشار وردپرس trigger نمیشوند.
✅ توصیه: لزوماً نیاز به فعال کردن نیست مگر اینکه مشکل خاصی دارید. میتوانید آن را روی `24 ساعت` تنظیم کنید اگر محتوای بسیار پویایی دارید.
۴- زمانبندی پاکسازی URLها (Scheduled Purge URLs)
یک ویژگی خیلی قدرتمند که میتوانید URLهای خاصی را وارد کنید تا در ساعت های مشخصی از روز به صورت خودکار پاکسازی شوند.
🕐 مثال کاربردی:
– شما یک صفحه دارید که هر روز رأس ساعت ۱۲ ظهر به صورت دستی یک گزارش جدید در آن قرار میدهید.
– آدرس آن صفحه را اینجا اضافه میکنید و زمان پاکسازی را روی 00 12 (ساعت ۱۲ هر روز) تنظیم میکنید.
– نتیجه: هر روز سر ساعت ۱۲، کش آن صفحه پاک میشود و گزارش جدید بلافاصله برای کاربران نمایش داده میشود.
این مورد همانند توابع cron عمل میکند.
۵- پاکسازی تمام هوک ها (Purge All Hooks)
این بخش یک لیست پیشفرض از هوکهای وردپرس را نشان میدهد. هوکها (hooks) رویدادهایی در وردپرس هستند (مثلاً `save_post` when a post is saved).
LiteSpeed Cache به طور پیشفرض به بسیاری از این هوکها گوش میدهد و اگر یک هوک رخداده بشد آن را پاکسازی میکند(بر اساس تنظیمات)
🪝مثالی از هوکهای موجود در لیست:
* `switch_theme:` وقتی یک پوسته جدید فعال میشود.
* `edit_comment:` وقتی یک دیدگاه ویرایش میشود.
* `delete_post:` وقتی یک نوشته حذف میشود.
✅توصیه: به کاربران عادی توصیه میشود دستکاری این لیست را انجام ندهند مگر اینکه دقیقاً بدانند چه کاری انجام میدهند.
تنظیمات بخش استثناها یا Exception
Do Not Cache URI:(URIها را کش نکنید) آدرسهای خاصی که نباید کش شوند.
نمونه : /cart/ , /my-account/ → صفحاتی از ووکامرس که برای هر کاربر منحصر به فرد است.
نمونه: /checkout/ , /thank-you/ → صفحاتی که حاوی اطلاعات حساس و یکبارمصرف هستند.
نمونه: /contact/ → اگر فرم تماس شما به صورت shortcode است و ممکن است مشکلات امنیتی ایجاد کند.
نکته: از / در ابتدای آدرس استفاده کنید.
Do Not Cache Query String:(کوئری ها را کش نکنید) اگر آدرس صفحه شامل پارامترهای خاصی بود، کش نشود.
نمونه: ?utm_source=facebook → اگر میخواهید نسخه کش شده تبلیغات شما را تحت تأثیر قرار ندهد.
Do Not Cache Category: (دسته بندی ها را مش نکنید) یک یا چند دسته کامل را از کش خارج کنید.
نمونه: اگر یک دسته به نام «اخبار فوری» دارید که محتوایش هر دقیقه به روز میشود، کش کردن آن معنی ندارد.
Do Not Cache Tag: (برچسب ها را تگ نکنید) همانند دسته بندی ها است.
Do Not Cache Cookie:(کوکی ها را کش نکنید) اگر کوکی خاصی در مرورگر کاربر شناسایی شد، کش نشود.
نمونه: wordpress_logged_in_ → این کوکی به طور خودکار برای کاربران لاگین شده تنظیم میشود. معمولاً این گزینه پیشفرض پر است تا برای کاربران واردشده کش انجام نشود.
تنظیمات بخش ESI
این بخش که مخفف Edge Side Includes هست مربوط به بخشهای پویا میباشد.
فرض کنید شما یک صفحه وب دارید که بیشتر بخشهای آن ثابت است (مانند هدر، فوتر، sidebar) اما یک بخش کوچک از آن پویا و برای هر کاربر متفاوت است (مانند سلام کردن به کاربر لاگین شده، سبد خرید).
بدون ESI: یا باید کل صفحه را برای آن کاربر لاگین شده کش نکنید (که باعث کندی میشود) یا برای همه کاربران یک نسخه کش شده ثابت نشان دهید (که بخش سبد خرید برای همه خالی نشان داده میشود).
با ESI: صفحه اصلی به طور کامل کش میشود، اما فقط آن بخش پویا (مثلاً سبد خرید) به عنوان یک «بلوک» جداگانه در نظر گرفته میشود. وقتی صفحه لود میشود، سرور آن بخش کوچک را به صورت زنده و جداگانه پردازش میکند و درون قالب کش شده قرار میدهد.
تنظیمات بخش Object Cache
وقتی وردپرس صفحه ای را می سازد ناچارا بارها به دیتابیس مراجعه می کند تا اطلاعاتی مثل تنطیمات سایت، منوها، اطلاعات پست ها و…را بگیرد که این فرایند بسیار زمانبر است.
بدون Object Cache:
هر بار از دیتابیس درخواستی می شود باید از ابتدا پردازش شود
با Object Cache :
نتیجه اولین درخواست به دیتابیس، در یک حافظه موقت بسیار سریع (معمولاً رم سرور) ذخیره میشود. درخواستهای بعدی برای همان اطلاعات، مستقیماً از این حافظه سریع خوانده میشوند، بدون نیاز به مراجعه به دیتابیس.
نکته: در وب سایت های فروشگاهی این امکان در بارگیری سریع محصولات و صفحات بسیار کاربردی است.
اگر از هاست اشتراکی استفاده می کنید (در برخی سرورها) بجای Memcache , Redis که در تصویر هم می بینید ممکن است از G2 استفاده شود.
Global Garbage Collector یا G2 : در واقع یک جایگزین برای Object Cache نیست، بلکه یک مکانیسم مدیریت حافظه (Garbage Collection) برای خود LS Cache است.
فرایند GC مسئول پیدا کردن و حذف فایل های کش قدیمی. وبلااستفاده است.
نکته جالب اینکه هر سرور لایت اسپید (Litespeed) بطور پیش فرض یک فرایند GC خاص خود را دارد.
در ادامه در خصوص روش های ذخیره سازی که افزونه لایت اسپیدکش در اختیار قرار میدهد توضیحاتی درج شده است.
روش Memcache و یا Redis:
هر دو متد، براساس نوع پشتیبانی سرور ، از RAM برای ذخیره سازی استفاده می کنند.
طبق راهنمای درج شده در همان صفحه باید دقت کنید که پورت هر کتد با دیگری متفاوت است.
✅ نکته:
فعال کردن Object Cache (با Redis/Memcached) یکی از بزرگترین جهشهای سرعت برای یک سایت وردپرسی است، زیرا بار عمده درخواستها به دیتابیس را برمیدارد و پاسخ را از حافظه موقت بسیار سریع RAM میدهد.
✅ به طور پیشفرض، وقتی Redis یا Memcached روی یک سرور نصب میشود، برای سادگی و عملکرد بهتر، بدون احراز هویت (Authentication) پیکربندی میشود. این به این معنی است که کافی است Host را localhost یا 127.0.0.1 تنظیم کنید و براساس انتخاب متد ذخیره سازی و متد ارائه شده در سرور پورت مربوطه را طبق راهنما یا 6379 و یا 11211 تنظیم کنید.
تنظیم نام کاربری و پسورد فقط در شرایط امنیتی که مدیر سرور صلاح بداند باید تنظیم گردد.
تنظیمات بخش Advanced
تب Advanced در LiteSpeed Cache پر از تنظیمات قدرتمند و خاص است که برای رفع مشکلات edge cases و بهینهسازی بیشتر طراحی شدهاند.
✅ بخش TTL کش AJAX
این بخش نحوه برخورد کش با درخواست های پویای سایت (مثل افزودن به سبد خرید – بررسی موجودی- فرم های تماس) را کنترل می کند.
سناریو: افزودن محصول به سبد خرید در ووکامرس
🚩 یک کاربر در حال گشت و گذار در سایت شماست. او یک محصول را میبیند و روی دکمه “افزودن به سبد خرید” کلیک میکند.
چه اتفاقی میافتد؟
به جای بارگذاری مجدد کل صفحه، ووکامرس یک درخواست AJAX به سرور ارسال میکند.
این درخواست حاوی اطلاعاتی است مثل: product_id=123 و quantity=1.
سرور این اطلاعات را پردازش میکند، محصول را به سبد خرید آن کاربر خاص اضافه میکند.
سرور سپس یک پاسخ کوچک (مثلاً یک پیام موفقیتآمیز یا updated contents سبد خرید) را به مرورگر کاربر برمیگرداند.
مرورگر، فقط بخش سبد خرید در صفحه را (مثلاً در هدر) بدون ریلود کردن کل صفحه، به روز میکند.
✅ کوکی ورود به سیستم
این بخش به کش میگوید کاربر وارد شده است تا برای او صفحه کش شده نشان ندهد. به هیچ وجه این مقدار را تغییر ندهید مگر اینکه دقیقاً بدانید چه کاری انجام میدهید.