در وردپرس، تنظیمات (options) با یک پرچم به نام autoload ذخیره میشوند . اگر این پرچم روی yes باشد، آن تنظیم در تمام صفحات سایت، در اولین درخواست، به حافظه بارگذاری میشود . این کار برای دادههای پرکاربرد (مانند نام سایت) مفید است، اما مشکل از جایی شروع میشود که
- پلاگینها یا قالبها دادههای غیرضروری را با autoload=yes ذخیره میکنند .
- پلاگینهای حذف شده، دادههای پسماند خود را پاک نمیکنند .
- با گذشت زمان، تعداد و حجم این دادهها انباشته شده و از حد معقول (مثلاً ۱ مگابایت) عبور میکند .
وردپرس مجبور میشود حجم عظیمی از داده را در هر بار بارگذاری صفحه، از دیتابیس بخواند و به حافظه منتقل کند. این کار باعث افزایش زمان پاسخدهی اولیه (TTFB) و کندی محسوس سایت میشود .
راهکارهای پیشگیری و رفع:
پایش و شناسایی: با کوئریهای زیر در دیتابیس، وضعیت را بررسی کنید :
مشاهده حجم کل دادههای اتولود:
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';
پیدا کردن بزرگترین گزینههای اتولود:
SELECT option_name, ROUND(LENGTH(option_value) / 1024 / 1024, 4) AS size_mb
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size_mb DESC
LIMIT 10;
پاکسازی: با شناسایی گزینههای بزرگ و غیرضروری، پرچم autoload آنها را به no تغییر دهید یا در صورت اطمینان، ردیف را حذف کنید .
استفاده از Object Cache: فعال کردن یک کش اشیاء مانند Redis یا Memcached مهمترین راهکار است. این سیستم، نتیجه کوئریهای سنگین را در حافظه ذخیره میکند و دفعات مراجعه به دیتابیس را به شدت کاهش میدهد
