اگه سایت وردپرسی دارید و از کندی سرعتش خسته شدید، این مقاله براتونه. میخوام در مورد یه ترفند صحبت کنم که خیلیا نمیدونن ولی میتونه سرعت سایت رو چند برابر کنه: Object Cache.
شاید اسمش ترسناک به نظر برسه، ولی نگران نباشید. قراره خیلی ساده توضیح بدم که چیه و چطور فعالش کنید.
اول بذارید یه مشکل رو توضیح بدم
وردپرس برای نمایش هر صفحه، کلی Query به دیتابیس میزنه. مثلاً برای نمایش صفحه اصلی یه سایت معمولی:
- اطلاعات تنظیمات سایت رو بخونه
- لیست پستها رو بگیره
- اطلاعات نویسنده هر پست
- دستهبندیها و تگها
- منوها
- ویجتها
- اطلاعات افزونهها
میدونید چند تا Query میشه؟ توی یه سایت معمولی، ممکنه ۵۰ تا ۲۰۰ Query برای یه صفحه زده بشه!
حالا فرض کنید ۱۰۰ نفر همزمان سایت رو ببینن. یعنی ۲۰,۰۰۰ Query به دیتابیس! دیتابیس له میشه.
Object Cache چطور این مشکل رو حل میکنه؟
ایده سادهست: بجای اینکه هر بار همون اطلاعات رو از دیتابیس بخونیم، یه بار میخونیم و توی یه جای سریعتر نگه میداریم. این "جای سریعتر" همون Cache هست.
وردپرس خودش یه سیستم Object Cache داره، ولی مشکلش اینه که اطلاعات رو توی RAM همون درخواست نگه میداره. یعنی وقتی کاربر بعدی میاد، دوباره باید همه چیز رو از دیتابیس بخونه.
با یه Persistent Object Cache (مثل Redis یا Memcached)، اطلاعات توی یه سرور Cache میمونه و همه درخواستها میتونن ازش استفاده کنن.
تفاوت Object Cache با Page Cache
یه سوال رایج: "من که افزونه کش دارم، چرا Object Cache لازمه؟"
فرق اساسی هست:
Page Cache: کل صفحه HTML رو ذخیره میکنه. عالیه برای کاربرای مهمان که همه یه چیز میبینن.
Object Cache: دادههای خام دیتابیس رو ذخیره میکنه. برای صفحاتی که نمیشه کش کرد (مثل پنل کاربری، سبد خرید) فوقالعادهست.
مثال: توی فروشگاه اینترنتی، هر کاربر سبد خرید متفاوتی داره. Page Cache کار نمیکنه چون هر کاربر صفحه متفاوتی میبینه. ولی Object Cache میتونه اطلاعات محصولات رو کش کنه که برای همه یکیه.
چطور Object Cache رو فعال کنیم؟
قدم ۱: بررسی هاست
اول باید مطمئن بشید هاست شما Redis یا Memcached داره. از پشتیبانی بپرسید یا توی مشخصات پلن چک کنید.
قدم ۲: نصب افزونه
اگه Redis دارید، افزونه Redis Object Cache رو نصب کنید. اگه Memcached دارید، افزونه Memcached Object Cache.
قدم ۳: تنظیمات wp-config.php
این خط رو به فایل wp-config.php اضافه کنید:
define('WP_CACHE', true);
قدم ۴: فعالسازی
برید به Settings > Redis و دکمه Enable Object Cache رو بزنید.
قدم ۵: تست
یه افزونه مثل Query Monitor نصب کنید و ببینید تعداد Query ها چقدر کم شده.
نتایج واقعی
یه سایت فروشگاهی با WooCommerce تست کردم:
قبل از Object Cache:
- Query های دیتابیس: ۱۸۷
- زمان Query: ۰.۸۵ ثانیه
- زمان کل صفحه: ۲.۳ ثانیه
بعد از Object Cache (Redis):
- Query های دیتابیس: ۲۳
- زمان Query: ۰.۰۹ ثانیه
- زمان کل صفحه: ۰.۷ ثانیه
میبینید؟ Query ها از ۱۸۷ به ۲۳ رسید! سرعت تقریباً ۳ برابر شد.
نکات مهم
۱. همیشه بکاپ بگیرید
قبل از هر تغییری، یه بکاپ کامل بگیرید. اگه مشکلی پیش اومد، برگردید به حالت قبل.
۲. تست کنید
بعد از فعالسازی، همه بخشهای سایت رو تست کنید. مخصوصاً صفحه سبد خرید و پنل کاربری.
۳. با افزونه کش ترکیب کنید
Object Cache و Page Cache مکمل همن. هر دو رو استفاده کنید.
۴. مانیتور کنید
گاهی چک کنید که Cache درست کار میکنه. افزونه Redis Object Cache یه صفحه داشبورد داره که آمار نشون میده.
مشکلات رایج و راهحل
سایت خراب شد!
افزونه رو غیرفعال کنید و فایل wp-content/object-cache.php رو پاک کنید.
تغییرات نشون داده نمیشه
کش رو Flush کنید. توی داشبورد Redis دکمه Flush Cache هست.
خطای اتصال به Redis
مطمئن بشید Redis روی سرور نصب و فعاله. با پشتیبانی هاست چک کنید.
جمعبندی
Object Cache یکی از بهترین کارایی هست که میتونید برای سرعت وردپرس انجام بدید. مخصوصاً برای سایتهای فروشگاهی و سایتهای با ترافیک بالا تاثیر فوقالعادهای داره.
اگه هاستتون Redis یا Memcached داره، همین الان فعالش کنید. اگه نداره، شاید وقتش رسیده یه آپگرید بدید!