آموزش وردپرس

بهینه‌سازی گزینه‌های خودبارگذاری وردپرس: شناسایی و رفع اشغال wp_options

وحید بهنام12 دقیقه مطالعه0 بازدید0 دیدگاه

اگر سایت وردپرس‌تان به‌تازگی کند شده و حس می‌کنید بارگذاری آن به‌دلیل داده‌های پنهان سنگین می‌شود، احتمالاً گزینه‌های autoloaded در جدول wp_options به‌حجم غیرقابل‌قبول رسیده‌اند. در این مقاله گام به گام نشان می‌دهیم چگونه این گزینه‌ها را شناسایی، تحلیل و به‌صورت هدفمند حذف یا بهینه کنید تا سرعت بارگذاری به‌سرعت قبل بازگردد. ابتدا با ابزارهای خط فرمان یا افزونه‌های معتبر، فهرستی از کلیدهای autoloaded که بیشترین فضای پایگاه داده را اشغال می‌کنند استخراج می‌کنیم. سپس با بررسی نقش هر گزینه، تصمیم می‌گیریم کدام یک واقعاً ضروری است و کدام می‌توانند به‌صورت lazy‑load یا غیرفعال شوند. به‌دست آوردن این پاکسازی نه‌تنها زمان پاسخگویی سرور را کاهش می‌دهد، بلکه پایه‌ای پایدار برای بهینه‌سازی‌های آینده فراهم می‌کند.

فهرست مطالب

درک گزینه‌های autoload در وردپرس

در وردپرس، هر مقدار که با add_option() یا update_option() ذخیره می‌شود، می‌تواند با ویژگی autoload فعال یا غیرفعال شود. وقتی مقدار autoload برابر yes باشد، وردپرس در هر بار بارگذاری، تمام این گزینه‌ها را از جدول wp_options به صورت یک‌باره (با یک پرس‌وجوی SELECT option_name, option_value FROM wp_options WHERE autoload='yes') می‌خواند. این رفتار برای تنظیمات ضروری مثل آدرس سایت یا تنظیمات پیش‌فرض تم‌ها مناسب است، اما اگر تعداد زیادی گزینه «autoload» داشته باشند، سرعت بارگذاری صفحه و مصرف حافظه به‌طور چشمگیری کاهش می‌یابد.

برای شناسایی گزینه‌های autoloadی که بیش از حد بزرگ یا غیرضروری هستند، می‌توانید از پرس‌وجوی زیر در phpMyAdmin یا WP‑CLI استفاده کنید:

CODE
SELECT option_name, LENGTH(option_value) AS size_kb
FROM wp_options
WHERE autoload='yes'
ORDER BY size_kb DESC
LIMIT 10;

این کوئری بزرگ‌ترین ۱۰ گزینه را بر حسب اندازه (به بایت) نمایش می‌دهد. در ادامه، یک جدول نمونه از نتایج محتمل آورده شده است:

نام گزینهحجم (KB)وضعیت
site_transient_timeout_theme_roots120yes
woocommerce_attribute_taxonomies95yes
wpseo_titles80yes

پس از شناسایی گزینه‌های بزرگ، دو روش اصلی برای بهینه‌سازی وجود دارد: اول، اگر گزینه برای عملکرد فوری سایت لازم نیست، با استفاده از update_option( $name, $value, 'no' ) ویژگی autoload را به no تغییر دهید؛ دوم، برای گزینه‌هایی که به‌صورت موقت استفاده می‌شوند، می‌توانید به جای ذخیره در wp_options از کَش‌های Transient یا Object Cache بهره ببرید. این کار باعث می‌شود داده‌ها فقط وقتی مورد نیاز باشند بارگذاری شوند و در درخواست‌های دیگر در حافظه موقت باقی بمانند.

یک مثال عملی: یک فروشگاه آنلاین با افزونه‌ی WooCommerce ممکن است گزینه woocommerce_sessions را به صورت autoload ذخیره کند؛ این گزینه شامل اطلاعات سشن تمام کاربران است و می‌تواند به سرعت به چند مگابایت برسد. با تغییر این گزینه به no یا جابجایی به Transient، می‌توانید بارگیری اولیه صفحه را تا ۲۰٪ کاهش دهید، به‌خصوص در سایت‌های پر بازدید.

در نهایت، پس از هر تغییر، حتماً با ابزارهای پروفایلینگ مانند Query Monitor یا Debug Bar بررسی کنید که تعداد ردیف‌های autoload کاهش یافته و زمان اجرای SELECT option_name FROM wp_options WHERE autoload='yes' بهبود یافته است. این کار تضمین می‌کند که بهینه‌سازی واقعی باشد و هیچ تنظیم مهمی به‌صورت ناخواسته از بارگذاری حذف نشود.

شناسایی رکوردهای زائد wp_options

برای شناسایی رکوردهای زائد در جدول wp_options ابتدا باید به‌دقت به ستون autoload نگاهی بیندازید. مقدار «yes» نشان می‌دهد که گزینه در هر بار بارگذاری وردپرس به حافظه کش می‌رود؛ در نتیجه حتی یک مقدار کوچک اما غیرضروری می‌تواند زمان اجرا را تحت‌اثر قرار دهد. می‌توانید با یک پرس‌وجوی ساده در phpMyAdmin یا WP‑CLI تمام گزینه‌های «autoloaded» را استخراج کنید:

CODE
SELECT option_name, option_value FROM wp_options WHERE autoload='yes' ORDER BY option_name;

این لیست اولیه به‌صورت یک جدول ساده به شما می‌دهد که کدام گزینه‌ها توسط هسته، افزونه یا قالب به‌صورت پیش‌فرض بارگذاری می‌شوند. برای فهم بهتر، جدول زیر دسته‌بندی تقریبی این گزینه‌ها را نشان می‌دهد:

دستهنمونه گزینهآیا قابل حذف است؟
هسته وردپرسsiteurl, home, blognameخیر
افزونه‌های محبوبwoocommerce_settings, yoast_seo_optionsبسته به تنظیمات
قالب‌هاtheme_mods_mytheme, custom_logoمعمولاً خیر
کش/آمار سفارشیmy_plugin_cache, transient_timeout_xyzاغلب بله

پس از استخراج لیست، به‌دنبال گزینه‌هایی بگردید که به‌نظر می‌رسد مرتبط با کش یا داده‌های موقت هستند؛ این‌ها معمولاً در نامشان شامل cache، transient یا یک پیشوند اختصاصی افزونه می‌باشند. برای مثال، اگر افزونه‌ای به نام «My Plugin» یک گزینه به نام my_plugin_cache داشته باشد که مقدار آن چند مگابایت است و هر بار بارگذاری می‌شود، می‌توانید با دستور زیر آن را حذف کنید (پس از تهیه بکاپ):

CODE
DELETE FROM wp_options WHERE option_name='my_plugin_cache' AND autoload='yes';

در نهایت، برای جلوگیری از بروز مجدد این مشکل، در هر بار نصب افزونه یا قالب جدید، تنظیم autoload را بررسی کنید. اگر افزونه به‌طور پیش‌فرض گزینه‌ای را با autoload='yes' ایجاد می‌کند اما به‌سرعت استفاده نمی‌شود، می‌توانید آن را به no تغییر دهید یا با استفاده از فیلتر add_option در فایل functions.php یا یک پلاگین سفارشی این رفتار را اصلاح کنید. این کار به‌صورت مستمر حجم wp_options را بهینه نگه می‌دارد و سرعت بارگذاری سایت را بهبود می‌بخشد.

تجزیه و تحلیل بارگذاری خودکار

در وردپرس گزینه‌های autoload به‌صورت خودکار در هر بار بارگذاری سایت از جدول wp_options خوانده می‌شوند. این رفتار باعث می‌شود اطلاعاتی که هرگز مورد استفاده قرار نمی‌گیرند، همچنان به‌عنوان بخشی از درخواست اولیه دیتابیس بارگیری شوند و زمان واکنش سرور را افزایش دهند. برای شناسایی این «بار اضافی» ابتدا باید ببینیم کدام گزینه‌ها به‌صورت autoload ثبت شده‌اند و چه حجمی از حافظه را اشغال می‌کنند.

ساده‌ترین راه برای استخراج لیست گزینه‌های autoload، اجرای یک کوئری SQL یا استفاده از WP‑CLI است. کوئری زیر، تمام رکوردهای autoload را به‌همراه اندازهٔ تقریباً بایتشان نمایش می‌دهد:

CODE
SELECT option_name, LENGTH(option_value) AS size_bytes
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size_bytes DESC
LIMIT 20;

همچنین می‌توانید با دستور زیر در خط‌ فرمان وردپرس، خروجی مشابهی دریافت کنید:

CODE
wp option list --autoload=yes --format=table

این دستورات به شما امکان می‌دهند که به‌سرعت گزینه‌های بزرگ را شناسایی کنید و تصمیم بگیرید آیا می‌توانند به autoload = 'no' تغییر یابند یا حذف شوند.

نام گزینهحجم (KB)استفاده معمول
_site_transient_timeout_theme_roots12کش تم‌های فعال
woocommerce_sessions85داده‌های سشن خرید
widget_recent_posts4ویجت پست‌های اخیر
wpseo_titles28تنظیمات سئو Yoast
_transient_doing_cron2علامت زمان‌بندی کرون

به‌عنوان مثال، اگر سایت شما یک فروشگاه ووکامرس داشته باشد، گزینه woocommerce_sessions معمولاً حجم قابل‌توجهی دارد؛ اما این داده‌ها فقط برای کاربرانی که در حال خرید هستند ضروری است. با تغییر مقدار autoload به 'no' می‌توانید آن را به‌صورت «تقاضایی» (lazy‑load) بارگذاری کنید، به‌طوری‌که فقط وقتی کاربر وارد صفحه سبد خرید می‌شود، سشن مربوطه فراخوانی شود. برای انجام این کار، کافیست دستور زیر را اجرا کنید:

CODE
wp option update woocommerce_sessions '' --autoload=no

پس از به‌روزرسانی، زمان واکنش سرور به‌خصوص در صفحات ثابت (مثلاً صفحهٔ تماس یا بلاگ) به‌طور چشمگیری کاهش می‌یابد، در حالی که عملکرد فروشگاه تحت‌الاثر نخواهد بود.

ابزارهای بررسی حجم گزینه‌ها

برای شناسایی گزینه‌های autoloaded که به‌طور غیرضروری فضای wp_options را اشغال می‌کنند، نخست باید ابزارهای مناسب را به‌کار ببندید. این ابزارها به دو دسته تقسیم می‌شوند: افزونه‌های گرافیکی که از طریق داشبورد وردپرس قابل دسترسی هستند، و ابزارهای خط فرمان یا پلاگین‌های توسعه‌دهنده که اطلاعات دقیق‌تری ارائه می‌دهند. استفاده از ترکیبی از این دو، امکان مقایسه سریع حجم و فراخوانی هر گزینه را می‌دهد.

یکی از ساده‌ترین راه‌ها، نصب افزونه Query Monitor است. این افزونه پس از فعال‌سازی، یک منوی کوچک در نوار مدیریت اضافه می‌کند که در آن می‌توانید لیست تمام گزینه‌های autoloaded به همراه حجم بایت‌شان را مشاهده کنید. برای گزینه‌های با حجم بیش از ۱۰۰ KB، یک علامت زرد نمایش می‌شود تا بلافاصله توجه شما را جلب کند. این روش برای کاربران غیر‌فنی مناسب است زیرا نیازی به دسترسی SSH یا خط فرمان ندارد.

اگر به‌دنبال اطلاعات عمیق‌تر و امکان حذف یا بهینه‌سازی انبوهی از گزینه‌ها هستید، ابزارهای خط فرمان مانند WP‑CLI بسیار کارآمدند. فرمان زیر، تمام گزینه‌های autoloaded را به ترتیب حجم نزولی لیست می‌کند:

CODE
wp option list --autoload=on --format=table --fields=option_name,autoload,size

خروجی این دستور می‌تواند به‌سرعت نشان دهد که کدام افزونه یا پوسته بیشترین بار را بر روی جدول می‌گذارد. برای مثال، اگر افزونه‌ای تحت عنوان «سفارشی‌سازی فرم تماس» حدود 2 MB فضای جدول را اشغال کرده باشد، می‌توانید با فرمان زیر مقدار آن را به‌صورت موقت غیرفعال کنید:

CODE
wp option update my_contact_form_settings autoload no

در ادامه، یک جدول مقایسه‌ای کوتاه بین چهار ابزار رایج برای بررسی حجم گزینه‌ها ارائه می‌شود. این جدول می‌تواند به‌عنوان یک «چک‌لیست بصری» برای انتخاب ابزار مناسب بر حسب نیاز شما عمل کند.

ابزارنوعمزایامعایب
Query Monitorافزونه داشبوردنصب آسان، نمایش گرافیکی، مناسب برای مبتدیانعدم دسترسی به جزئیات دقیق SQL
WP‑CLIخط فرمانسرعت بالا، امکان اسکریپت‌نویسی، خروجی قابل فیلترنیاز به دسترسی سرور و دانش پایه CLI
Advanced Database Cleanerافزونه مدیریت پایگاه دادهپاک‌سازی خودکار ردیف‌های «غیر‌قابل استفاده»، گزارش‌گیری دوره‌ایممکن است تنظیمات پیش‌فرض را به‌صورت گسترده حذف کند
Health Check & Troubleshootingافزونه تشخیص سلامتقابلیت «حالت عیب‌یابی» برای غیرفعال‌سازی موقت افزونه‌هانمایش محدود به گزینه‌های autoloaded در حالت عادی
مقایسه کوتاه

در عمل، ترکیب Query Monitor برای شناسایی سریع موارد مشکوک و WP‑CLI برای حذف یا تغییر تنظیمات مشکل‌ساز، بهترین نتایج را می‌دهد. پس از شناسایی گزینه‌های حجیم، به‌راحتی می‌توانید با به‌روزرسانی یا حذف افزونه‌های مربوطه، بار wp_options را به حداقل برسانید و سرعت بارگذاری سایت را بهبود بخشید.

حذف ایمن داده‌های غیر ضروری

گزینش داده‌های غیر ضروری برای حذف همیشه با احتیاط انجام می‌شود؛ چرا که گزینه‌های autoload بعضاً برای عملکرد هسته یا افزونه‌های مهم حیاتی هستند. حذف تصادفی می‌تواند باعث بروز خطاهای «Undefined index» یا حتی خراب شدن کل سایت شود. بنابراین اولین گام، تهیهٔ یک نسخهٔ کامل از پایگاه داده (با استفاده از wp db export یا ابزارهای پشتیبان‌گیری) است تا در صورت بروز مشکل بتوانید به سرعت بازگردانید.

برای شناسایی گزینه‌های «سنگین» و کم‌استفاده، می‌توانید از پرس‌وجوی زیر در phpMyAdmin یا WP‑CLI استفاده کنید:

CODE
SELECT option_name, LENGTH(option_value) AS size
FROM wp_options
WHERE autoload='yes'
ORDER BY size DESC
LIMIT 30;

این لیست ۳۰ گزینهٔ بزرگ را نشان می‌دهد. سپس می‌توانید این موارد را با فهرست زیر مقایسه کنید تا تصمیم بگیرید کدامیک ایمن برای حذف هستند:

دستهٔ گزینهمثالحذف ایمن؟
پلاگین‌های کشwp_fastest_cache_optionsبله (پس از پاک‌سازی کش)
تنظیمات موقت قالبtheme_mods_mythemeبله (اگر قالب دیگر استفاده نمی‌شود)
کلیدهای API هستهsiteurl, homeخیر
تنظیمات افزونه‌های امنیتیwordfence_waf_optionsخیر

قبل از حذف، بهتر است گزینهٔ مورد نظر را موقتاً غیرفعال کنید تا بتوانید اثر آن را ارزیابی کنید. با استفاده از WP‑CLI می‌توانید به‌صورت زیر autoload را به no تغییر دهید:

CODE
wp option update my_unused_option '' --autoload=no

سپس ۲۴-۴۸ ساعت سایت را تحت نظر بگیرید؛ اگر هیچ خطایی مشاهده نشد، می‌توانید به مرحلهٔ حذف نهایی پیش بروید.

حذف نهایی با یک پرس‌وجوی ساده انجام می‌شود. توجه داشته باشید که قبل از اجرای دستور حذف، همیشه یک نسخهٔ پشتیبان داشته باشید:

CODE
DELETE FROM wp_options
WHERE option_name='my_unused_option' AND autoload='no';

پس از حذف، یکبار دیگر جدول wp_options را برای ردیف‌های autoload='yes' بررسی کنید و از تمیز شدن داده‌ها اطمینان حاصل کنید. همچنین پاک‌سازی transients (داده‌های موقت) با افزونه‌ای مانند “Transient Cleaner” می‌تواند فضای بیشتری آزاد کند و عملکرد پایگاه داده را بهبود بخشد.

بهینه‌سازی عملکرد سایت پس از پاکسازی

پس از حذف داده‌های زائد از wp_options، اولین قدم اطمینان از اینکه تغییرات به‌صورت دائم اعمال می‌شوند، است. برای این کار می‌توانید کش شیء (object cache) را فعال کنید؛ این کش تمام نتایج پرس‌وجوهای پایگاه‌داده را در حافظه ذخیره می‌کند و بارگذاری صفحات را به‌سرعت می‌کشد. اگر از سرویس‌های میزبانی اشتراکی استفاده می‌کنید، پلاگینی مثل Redis Object Cache یا WP‑Rocket می‌تواند به‌صورت خودکار این کار را انجام دهد.

در مرحلهٔ بعد، بازبینی نهایی گزینه‌های «autoload» ضروری است. حتی پس از پاکسازی اولیه، ممکن است برخی افزونه‌ها یا قالب‌ها دوباره داده‌های بزرگ را به‌صورت خودکار بارگذاری کنند. برای شناسایی این موارد می‌توانید از ابزار «Query Monitor» یا افزونهٔ Health Check & Troubleshooting استفاده کنید؛ این ابزارها تمام کلیدهای autoload را نمایش می‌دهند و امکان غیرفعال‌سازی سریع آن‌ها را فراهم می‌آورند. نکتهٔ مهم این است که فقط گزینه‌های ضروری را باقی بگذارید و بقیه را به no تغییر دهید.

پس از اعمال تنظیمات، عملکرد سایت را با چند معیار کلیدی سنجید. جدول زیر نمونهٔ مقایسهٔ سادهٔ برخی معیارهای مهم قبل و بعد از پاکسازی را نشان می‌دهد:

معیارقبل از پاکسازیبعد از پاکسازی
تعداد پرس‌وجوهای DB در صفحهٔ اصلی≈ 45≈ 28
حافظه مصرفی PHP (MB)≈ 120≈ 85
زمان بارگذاری (ثانیه)≈ 3.2≈ 1.8
امتیاز PageSpeed (Mobile)≈ 68≈ 84
مقایسهٔ عملکردی ساده پس از پاکسازی wp_options

به عنوان مثال، در یک سایت فروشگاهی متوسط که حدود ۱۶ ۰۰۰ بازدید ماهانه داشت، حذف ۲۲ ۰۰۰ ردیف autoload منجر به کاهش ۴۰٪ در زمان واکنش سرور شد؛ این به‌خصوص برای کاربران موبایل که سرعت اینترنت محدودتر است، تجربهٔ بهتری فراهم می‌کند. برای حفظ این بهبود، بهتر است هر ماه یک بار با همان ابزارها وضعیت autoload را بررسی کنید و داده‌های منقضی یا بی‌استفاده را حذف کنید.

سوالات متداول

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

برای یافتن گزینه‌های autoload شده می‌توانید از کوئری مستقیم MySQL یا افزونه‌های مدیریت پایگاه‌داده استفاده کنید. مثال کوئری: SELECT option_name, option_value FROM wp_options WHERE autoload=’yes’؛ نتایج را بررسی کنید و گزینه‌های بزرگ حجم را علامت‌گذاری کنید.

آیا حذف گزینه‌های غیرضروری می‌تواند سایت را تسریع کند؟

حذف گزینه‌های غیرضروری که autoload دارند باعث کاهش زمان بارگذاری اولیه وردپرس می‌شود. قبل از حذف، همیشه یک نسخه پشتیبان از جدول wp_options بگیرید. سپس می‌توانید با دستور DELETE یا از طریق phpMyAdmin حذف کنید.

چگونه می‌توان مقدار autoload یک گزینه را بدون خطر تغییر داد؟

برای تغییر مقدار autoload یک گزینه، در phpMyAdmin یا با WP-CLI گزینه autoload را به ‘no’ تغییر دهید. مثال با WP-CLI: wp option update option_name –autoload=no. پس از تغییر، عملکرد سایت را بررسی کنید تا از عدم بروز خطا مطمئن شوید.

اگر یک افزونه گزینه‌ای با autoload زیاد اضافه کرد چه کاری انجام دهم؟

ابتدا شناسایی کنید که کدام افزونه این گزینه را اضافه کرده است. اگر امکان حذف یا غیرفعال‌سازی افزونه وجود دارد، آن را انجام دهید. در غیر این صورت می‌توانید با فیلترهای wp_options مقدار autoload را به ‘no’ تبدیل کنید یا از افزونه‌های مدیریت گزینه‌ها استفاده کنید.

چک‌لیست سریع

  • مقدار autoload گزینه‌ها را در wp_options بررسی کنید.
  • رکوردهای بزرگ یا نامرتبط را شناسایی کنید.
  • از ابزارهای تجزیه و تحلیل حجم برای ارزیابی دقیق استفاده کنید.
  • داده‌های غیرضروری را به‌صورت ایمن حذف کنید.
  • پس از پاکسازی، سرعت و کارایی سایت را تست کنید.
  • حجم wp_options را به‌صورت دوره‌ای نظارت کنید.
  • مستندات حذف شده را به‌روز نگه دارید.
  • یک برنامه منظم برای بررسی گزینه‌های autoload تنظیم کنید.

پس از حذف گزینه‌های اضافی، سایت شما با بارگذاری سریع‌تر و مصرف منابع کمتر کار می‌کند. این بهبودها می‌توانند تجربه کاربری را ارتقاء داده و فشار سرور را کاهش دهند. اگر سؤال یا تجربه‌ای در این زمینه دارید، خوشحال می‌شویم که بشنویم.

نوشته‌شده و بازبینی‌شده توسط

متخصص سئو، وردپرس و تولید محتوا

اولین نفری باش که نظر می‌ده!

فقط نام لازم است، ایمیل اختیاریه و منتشر نمی‌شه.