اگر سرعت سایت وردپرسی برای شما اهمیت دارد، احتمالاً با اصطلاح Object Cache یا «کش آبجکت» روبهرو شدهاید. کش آبجکت یکی از روشهای مؤثر برای کاهش فشار روی دیتابیس و افزایش سرعت اجرای درخواستهای وردپرس است. برخلاف کش معمولی صفحات که نتیجه نهایی صفحات سایت را ذخیره میکند، Object Cache دادههایی را که وردپرس بهطور مکرر از دیتابیس درخواست میکند، در حافظه موقت نگهداری میکند تا در دفعات بعدی با سرعت بیشتری در اختیار سایت قرار بگیرند.
در این مقاله بررسی میکنیم Object Cache چیست، کش آبجکت دائمی چه تفاوتی با کش معمولی دارد، Redis و Memcached چه هستند، چگونه Object Cache را در وردپرس فعال کنیم و آیا فعال کردن آن برای سایت ضروری است یا خیر.
Object Cache چیست؟
Object Cache یا کش آبجکت، سیستمی برای ذخیره موقت دادههای مورد استفاده وردپرس است. وردپرس در هنگام نمایش صفحات مختلف، درخواستهای زیادی به دیتابیس ارسال میکند. بخشی از این اطلاعات ممکن است بارها و بارها مورد نیاز باشند.
Object Cache این دادهها را در یک حافظه سریعتر، معمولاً RAM سرور، ذخیره میکند. در نتیجه زمانی که وردپرس دوباره به همان اطلاعات نیاز داشته باشد، به جای اینکه هر بار اطلاعات را از دیتابیس دریافت کند، میتواند آنها را از کش دریافت کند.
به زبان ساده:
بدون Object Cache:
وردپرس ← دیتابیس ← دریافت اطلاعات ← نمایش نتیجه
با Object Cache:
وردپرس ← Object Cache ← دریافت سریع اطلاعات
این فرآیند میتواند تعداد درخواستهای غیرضروری به دیتابیس را کاهش داده و در شرایط مناسب، سرعت پاسخگویی سایت را بهتر کند.
کش آبجکت دائمی چیست؟
در وردپرس، Object Cache بهصورت پیشفرض میتواند دادهها را در طول یک درخواست نگهداری کند؛ اما برای اینکه اطلاعات کششده بین درخواستهای مختلف نیز باقی بمانند، به یک Persistent Object Cache یا «کش آبجکت دائمی» نیاز داریم.
کش آبجکت دائمی باعث میشود دادههای کششده بعد از پایان یک درخواست وب نیز در حافظه سرویس کش باقی بمانند و درخواست بعدی بتواند از همان اطلاعات استفاده کند.
برای مثال، فرض کنید وردپرس اطلاعات خاصی را از دیتابیس دریافت کرده است. در حالت معمول، ممکن است در درخواست بعدی دوباره مجبور به دریافت آن اطلاعات از دیتابیس شود. اما با Persistent Object Cache، اطلاعات موردنظر میتواند در Redis یا Memcached باقی بماند و درخواست بعدی سریعتر به آن دسترسی پیدا کند.
بنابراین منظور از «دائمی» این نیست که اطلاعات برای همیشه ذخیره میشوند؛ بلکه یعنی کش بین درخواستهای مختلف سایت حفظ میشود.
تفاوت Object Cache معمولی و Persistent Object Cache
یکی از نکات مهم این است که Object Cache و Persistent Object Cache دقیقاً یک مفهوم نیستند.
در Object Cache معمولی، دادههای کش میتوانند فقط در طول اجرای همان درخواست در حافظه نگهداری شوند و با پایان درخواست از بین بروند.
اما در Persistent Object Cache، دادهها در یک سرویس خارجی مانند Redis یا Memcached ذخیره میشوند و در درخواستهای بعدی نیز قابل استفاده هستند.
بنابراین:
| ویژگی | Object Cache معمولی | Persistent Object Cache |
|---|---|---|
| ذخیره اطلاعات | موقت | بین درخواستها |
| ماندگاری بین درخواستها | خیر | بله |
| کاهش درخواست به دیتابیس | محدود | بیشتر |
| استفاده از Redis/Memcached | معمولاً خیر | بله |
| مناسب برای سایتهای پرترافیک | محدودتر | مناسبتر |
Redis چیست؟
Redis یکی از محبوبترین سرویسهای مورد استفاده برای Persistent Object Cache است.
Redis اطلاعات را در حافظه RAM نگهداری میکند و به دلیل سرعت بالای دسترسی، میتواند برای ذخیره دادههایی که مرتباً توسط وردپرس درخواست میشوند بسیار مناسب باشد.
در سایتهای وردپرسی، Redis میتواند در کنار افزونههای کش و بهینهسازی استفاده شود تا بخشی از دادههای مورد نیاز وردپرس با سرعت بیشتری در اختیار سیستم قرار بگیرند.
البته Redis بهتنهایی باعث نمیشود تمام بخشهای سایت کش شوند؛ بلکه نقش آن با کش صفحه یا Page Cache متفاوت است.
Memcached چیست؟
Memcached نیز یک سیستم کش مبتنی بر حافظه است که میتواند برای ذخیره دادههای موقت و افزایش سرعت دسترسی به اطلاعات مورد استفاده قرار گیرد.
Memcached و Redis هر دو میتوانند برای Object Cache وردپرس استفاده شوند، اما امکانات و معماری آنها با یکدیگر تفاوتهایی دارد.
اینکه کدام گزینه برای سایت شما بهتر است، به نوع هاست، تنظیمات سرور، منابع سختافزاری و ساختار سایت بستگی دارد.
تفاوت Object Cache با Page Cache چیست؟
این دو مورد را نباید با یکدیگر اشتباه گرفت.
Page Cache نتیجه آماده یک صفحه را ذخیره میکند. برای مثال اگر یک کاربر صفحهای از سایت را باز کند، سیستم کش میتواند نسخه آماده آن صفحه را ذخیره کند تا برای بازدیدکننده بعدی سریعتر نمایش داده شود.
اما Object Cache بیشتر روی دادهها و نتایج مورد استفاده وردپرس تمرکز دارد.
بهطور خلاصه:
- Page Cache: ذخیره نسخه آماده صفحات
- Object Cache: ذخیره دادهها و نتایج مورد استفاده برنامه
- Redis/Memcached: سرویسهایی برای پیادهسازی Persistent Object Cache
به همین دلیل Object Cache و Page Cache رقیب یکدیگر نیستند و در بسیاری از سایتها میتوانند در کنار یکدیگر استفاده شوند.
Object Cache چه تأثیری روی سرعت وردپرس دارد؟
فعال کردن Object Cache میتواند در شرایط مناسب باعث کاهش فشار روی دیتابیس و بهبود سرعت پردازش درخواستهای وردپرس شود.
این موضوع بهخصوص برای سایتهایی که:
- تعداد زیادی درخواست به دیتابیس دارند
- افزونههای زیادی نصب کردهاند
- کاربران همزمان زیادی دارند
- فروشگاه اینترنتی هستند
- دیتابیس نسبتاً سنگینی دارند
- کوئریهای تکراری زیادی اجرا میکنند
میتواند مفید باشد.
البته نباید انتظار داشت فعال کردن Object Cache بهتنهایی سرعت تمام سایتها را چند برابر کند. میزان تأثیر آن به ساختار سایت و نحوه استفاده از دیتابیس بستگی دارد.
آیا Object Cache برای همه سایتها ضروری است؟
خیر.
برای یک سایت ساده با بازدید کم و دیتابیس سبک، ممکن است فعال کردن Object Cache تأثیر چشمگیری روی سرعت نداشته باشد.
اما در سایتهای بزرگتر، فروشگاههای اینترنتی، سایتهای پرترافیک و پروژههایی که درخواستهای دیتابیس زیادی دارند، Persistent Object Cache میتواند بسیار مفید باشد.
بنابراین بهتر است قبل و بعد از فعالسازی، عملکرد سایت را بررسی کنید و ببینید آیا در پروژه شما بهبود قابل توجهی ایجاد شده است یا خیر.
چگونه Object Cache را در وردپرس فعال کنیم؟
یکی از روشهای رایج، استفاده از افزونههای کش وردپرس مانند LiteSpeed Cache است؛ البته فعال شدن Object Cache به پشتیبانی سرور نیز بستگی دارد.
اگر هاست شما از Redis یا Memcached پشتیبانی کند، معمولاً میتوانید از طریق تنظیمات مربوط به کش، سرویس Object Cache را فعال کنید.
برای مثال در افزونه LiteSpeed Cache میتوانید بخش مربوط به Object Cache را بررسی کنید.
در صورت پشتیبانی سرور، معمولاً گزینههایی مانند Redis یا Memcached در اختیار شما قرار میگیرند.
نکته مهم این است که نصب افزونه بهتنهایی برای راهاندازی Redis کافی نیست. سرویس Redis یا Memcached باید در سطح سرور نیز نصب و فعال شده باشد.
اگر Redis یا Memcached روی هاست فعال نباشد چه کنیم؟
اگر در تنظیمات افزونه کش، سرویس Object Cache در دسترس نیست، احتمالاً سرویس موردنظر روی سرور شما نصب یا فعال نشده است.
در این شرایط باید با پشتیبانی هاست یا مدیر سرور تماس بگیرید و درباره پشتیبانی از Redis Object Cache یا Memcached سؤال کنید.
در هاستهای اشتراکی نیز ممکن است امکان نصب این سرویسها در اختیار کاربر نباشد؛ زیرا Redis و Memcached معمولاً در سطح سرور مدیریت میشوند و فعالسازی آنها به تنظیمات شرکت هاستینگ بستگی دارد.
بنابراین اگر گزینه Redis را در افزونه خود نمیبینید، لزوماً مشکل از وردپرس یا افزونه شما نیست.
آیا فعال کردن Object Cache باعث مصرف RAM میشود؟
بله. از آنجایی که Redis و Memcached برای نگهداری دادهها از حافظه RAM استفاده میکنند، مقداری از RAM سرور به این سرویس اختصاص پیدا میکند.
به همین دلیل اگر سرور منابع بسیار محدودی داشته باشد، باید میزان مصرف RAM را نیز در نظر گرفت.
در سرورهای مناسب، تنظیم صحیح اندازه حافظه کش اهمیت زیادی دارد تا Object Cache باعث مصرف بیش از حد منابع نشود.
آیا بعد از فعال کردن Object Cache باید کش را پاک کنیم؟
در بسیاری از مواقع پس از تغییر تنظیمات کش بهتر است کشهای قبلی پاک شوند تا دادههای جدید با تنظیمات صحیح ایجاد شوند.
همچنین اگر بعد از فعالسازی Object Cache با رفتار غیرعادی سایت مواجه شدید، یکی از اقدامات اولیه بررسی وضعیت کش و پاک کردن آن است.
البته روش پاکسازی کش بسته به افزونه و سرویس مورد استفاده متفاوت است.
آیا Object Cache امنیت سایت را افزایش میدهد؟
هدف اصلی Object Cache افزایش سرعت و کاهش فشار روی دیتابیس است، نه افزایش امنیت.
بنابراین نباید Object Cache را جایگزین افزونههای امنیتی، فایروال، بهروزرسانی وردپرس یا سایر اقدامات امنیتی دانست.
جمعبندی
Object Cache یکی از روشهای مهم برای بهینهسازی وردپرس است که با ذخیره دادههای مورد نیاز در حافظه سریعتر، میتواند تعداد درخواستهای تکراری به دیتابیس را کاهش دهد.
اگر این کش بهصورت Persistent Object Cache پیادهسازی شود، اطلاعات کششده میتوانند بین درخواستهای مختلف نیز باقی بمانند. سرویسهایی مانند Redis و Memcached از گزینههای رایج برای این کار هستند.
اگر سایت شما بازدید بالا، دیتابیس سنگین یا درخواستهای زیادی دارد، بررسی و فعالسازی Object Cache میتواند یکی از اقدامات مفید برای بهینهسازی عملکرد سایت باشد. با این حال، فعال کردن آن به پشتیبانی سرور و منابع هاست بستگی دارد و بهتر است پس از فعالسازی، عملکرد و مصرف منابع سایت نیز بررسی شود.