سرفصلهای پست
پاکسازی جدول Wp_options و بارگیری خودکار داده ها
امروز قصد داریم تا نگاهی به جدول wp_options در پایگاه داده وردپرس خود کنیم. به طور کلی این منطقه شامل کلیه عملکردهای وردپرس و پایگاه داده است که در بیشتر اوقات به آن توجه نمیشود.
با توجه به بارگیری های خودکار داده ها در پوسته ها و افزونه های وردپرس توجه نکردن به این جدول (مخصوصا در وب سایتهای پربازدید و قدیمی) میتواند باعث کندی صفحهها و همچنین کاهش سرعت سایت و در نتیجه سئو وب سایت شما شود.
نکاتی که در پایین به شما آموزش میدهیم را بررسی کنید تا یاد بگیرید که چطور جدول wp_options را بررسی، عیبیابی و پاکسازی کنید.
جدول wp_options چیست و چه وظایفی دارد ؟
جدول wp_options حاوی تمامی نوع داده مربوط به عملکرد وب سایت وردپرسی شما میباشد ، دادههایی مانند :
- آدرس وب سایت ، آدرس وردپرس ، ایمیل مدیر ، دستهبندی پیشفرض، تعداد مقالات در هر صفحه ، فرمت زمان و …
- تنظیماتی مخصوص ابزارکها ، افزونهها و پوستهها
- دادههای موقت ذخیره شده
موارد زیر در جدول wp_options وجود دارد که یکی از آنها را که در عملکرد وب سایت نقش بسیاری دارد را پررنگ کردیم:
- option_id
- option_name
- option_value
- autoload ( بارگیری خودکار)
یکی از مهمترین مواردی که باید در رابطه با wp_options بدانید ، اطلاع داشتن از بخشی به نام بارگیری خودکار (autoload) میباشد. این بخش شامل دو متغیر بله و خیر (yes or no) میباشد . که اساساً برای کنترل تابع wp_load_alloptions() استفاده میشود. دادههای Autoload ، دادههایی هستند که در هر صفحه وردپرسی شما اجرا میشوند.
دقیقا مانند غیرفعال کردن بارگیری بعضی از کدهای جاوااسکریپت در بعضی از صفحات وب سایت ، این بخش نیز به راحتی غیرفعال و فعال میشود.
به طور کلی ، دادههای Autoload به صورت پیشفرض در تمامی جداول بر روی “yes” تنظیم شدهاند که با توجه به اینکه بعضی از افزونهها نیازی نیست که در تمامی صفحات بارگیری شوند، توسط توسعه دهندگان بارگیری خودکارشان (autoload) غیرفعال میشود.
تجربه نشان داده است که وجود مقدار زیادی autoload در جدول wp_options میتواند باعث مشکل در وب سایت وردپرس شما شود.
در زیر به تعدادی از مشکلات معمول این دسته اشاره میکنیم:
- دادهها به طور کلی توسط خود افزونهها بارگیری خودکار میشوند و نیازی نیست که در تمامی صفحات بارگیری شوند و برای مثال دادههای فرم تماس نیازی نیست که در تمام صفحات وب سایت لود شوند ، بنابراین بهتر است که متغیر داده Autoload را بر روی “no” قرار دهید.
- افزونهها و پوستهها را حذف میکنید ولی هنوز تنظیمات مخصوصشان در جدول wp_options وجود دارند . این بدان معناست که ممکن است وب سایت در هنگام بارگیری، اطلاعات غیر ضروری قدیمی را نیز بارگیری خودکار کند.
- بعضی از توسعه دهندگان بهجای استفاده از جداول مخصوص خود افزونه و یا پوسته ، دادههای محصول خود را در جدول wp_options ذخیره میکنند. استدلالهایی برای هر دو طرف وجود دارد، برای مثال بعضی از توسعه دهندگان علاقه ای به استفاده از جداول یکتا برای افزونه خود ندارند. به هر حال ، جدول wp_options جهت قرارگیری صدها سطر اطلاعات طراحی نشده است و بهتر است که بهینه سازی شود تا باعث کاهش سرعت سایت نشود.
حداکثر مجاز استفاده از autoload در یک وب سایت وردپرسی چقدر است؟ این مقدار میتواند در هر نوع وب سایتی متفاوت باشد ولی به طور کلی حجم دادهها معمولا بهتر است بین 300 کیلوبایت تا 1 مگابایت باشد.
هنگامی که شما شروع به بررسی جدول wp_options میکنید با حجمی حدود 3 تا 5 مگابایت مواجه میشوید که حتما چیزهایی را باید غیرفعال یا به طور کلی حذف کنید تا جدول و دادههای autoload بهینه سازی شوند. اگر هنگام بررسی با حجمی بیشتر از 10 مگابایت مواجه شدید ، باید بگویم که وضعیت بحرانی است و باید سریعا به بررسی جدول wp_options بپردازید. با این حال ، صحبت ما به این معنا نیست که اگر بررسی نکنید با مشکل مواجه میشوید ولی در کل اگر از حالا بهینه سازی را شروع کنید ، مشکلات آینده را پیشگیری کرده و همچنین سرعت سایت و سئو وب سایتتان را بهبود میبخشید.
عیبیابی Autoload (بارگیری خودکار) در جدول wp_options
اگر شما با مشکل کندی سرعت سایت روبهرو شدهاید، یکی از دلایلی که میتواند باعث این مشکل شده باشد ، وجود کوئریها و یا دادههای خودکار بارگیری شدهی یک افزونه قدیمی در جدول wp_options میباشد.
در زیر ما به شما نشان میدهیم که چگونه حجم دادههای ستون autoload در جدول wp_options را بررسی کنید و خیلی راحت اطلاعات اضافه را پاکسازی کنید.
[box type=”error”]قبل از اعمال هر عملی در سایت خود بک آپ تهیه فرمایید.[/box]
بررسی حجم دادههای ستون Autoload
اولین کاری که باید انجام دهید ، بررسی حجم داده های ستون autoload در حال مصرف در وب سایت وردپرسی شماست. برای اینکار ، وارد phpMyAdmin شوید.
از سمت چپ صفحه دیتابیس خود را انتخاب کنید و سپس وارد سربرگ SQL شوید .
بعد از انجام این کار دستور زیر را در بخش ادیتور وارد کنید و روی کلید GO کلیک کنید.
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload='yes';
توجه داشته باشید ما نسبت به نصب پیشفرض وردپرس آموزش میدهیم و ممکن است شما به علت امنیت از پیشوندی غیر از wp_ استفاده کرده باشید که برای استفاده از دستور بالا میبایست پیشوندی که تعریف کردهاید را به جای wp_ وارد کنید.
حجم نمایش دادهشده از تابع autoload_size بر مبنای بایت می باشد. هر 1000 بایت برابر 1 کیلوبایت است و هر 1000 کیلوبایت برابر 1 مگابایت است . بنابراین در تصویر زیر حجم autoload_size وردپرس ما 249025 بایت به معنای 0.25 مگابایت میباشد. به طور کلی این مقدار حجم برای یک وب سایت ، حجمی ایدهآل است. اگر نتیجه بررسی شما نیز کمتر از 1 مگابایت بود نیازی نیست که نگران چیزی باشید.
برای تبدیل راحت بایت به مگابایت کافی است در گوگل عبارت “byte to mb” سرچ کنید تا در یک rich answers گوگل بتوانید تبدیل را انجام دهید.
بنابراین ، اگر حجم autoload_size وب سایت شما بیشتر از 1 مگابایت بود ، پیشنهاد میشود که حتما در ادامه این مقاله میزفا را دنبال کنید تا سئو و سرعت وب سایت خود را از این طریق بهبود بخشید.
در نمونه زیر حجم autoload_size برابر 137724715 بایت معادل 137 مگابایت میباشد. که این مورد نشان دهنده وجود مشکل در یک وب سایت وردپرسی است.
شما همچنین میتوانید برای بررسی تخصصی تر از چندین دستور مختلف دیگر استفاده کنید.
در دستور زیر حجم autoload_size بر حسب کیلوبایت ، تعداد کوئری های autoload و 10 دستور autoload اول دیتابیس به شما نمایش داده میشود.
SELECT 'autoloaded data in KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM wp_options WHERE autoload='yes' UNION SELECT 'autoloaded data count', count(*) FROM wp_options WHERE autoload='yes' UNION (SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)
اگر شما از خدمات سایت New Relic استفاده میکنید ، میتوانید از آن برای پیدا کردن مشکلات کوئری های جدول wp_options استفاده کنید، در سربرگ دیتابیس این وب سایت ، شما میتوانید فهرستی از جداول و کوئریهایی که پرمصرف هستند را به دست آورید، اگر روی یکی از گزینههای در فهرست کلیک کنید، در رابطه با کوئریها اطلاعات بیشتری کسب میکنید. در مثال زیر ، شما میتوانید تعداد انگشت شماری از دادههای autoload در جدول wp_options را مشاهده کنید.
با اطمینان میتوان گفت که با جستوجویی کوتاه متوجه خواهیم شد که حدودا داده های autoload شده این وب سایت حداقل 250 مگابایت است.
مرتب سازی داده های Autoload شده در بالا
مرحله بعدی بهینه سازی ، مرتب کردن پر مصرف ترین ها در داده های autoload شده میباشد. شما میتوانید با دستور SQL زیر به سرعت لیست 10 داده پرمصرف را به دست آورید.
SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 10;
دوباره خاطر نشان کنیم که ممکن است شما پیشوند جداول وردپرس خود را هنگام نصب برای افزایش امنیت تغییر داده باشید و نامی جز wp_ گذاشته باشید، برای اینکه دستور بالا کار کند ، شما باید پیشوند جداول خود را جایگزین wp_ کنید.
ایجاد تغییرات در یک داده autoload شده مشخص در جدول wp_options
مرحله بعدی ایجاد تغییرات در یک داده autoload شده پرمصرف میباشد.
ریدایرکت 301
همانطور که مشاهده میکنید در تصویر بالا در صدر لیست ریدایرکت 301 قرار دارد. این کوئری به احتمال بسیار زیاد مربوط به یک افزونه سئو وردپرس میباشد و وظیفه انتقال دادن صفحات را دارد. در این نوع موارد ، بهتر است که از افزونه برای انتقال صفحات استفاده نکنید و از ابزار پیشفرض وب سرور خود استفاده کنید.
دلیل این پیشنهاد چیست ؟ به این دلیل که استفاده از افزونههای رایگان وردپرس برای انجام عملیات انتقال صفحات ممکن است باعث ایجاد اختلال در عملکرد وب سایت شوند ، نیازمند اجرای کد های اضافی و منابع دارد و همچنین ایجاد کوئری autoload در وب سایت میباشد ، پیشنهاد میشود که از انتقال صفحات از طریق پلاگین استفاده نکنید.
wpurp_custom_template_
در لیست مرتب شده بالا هشت جایگاه را کوئری wpurp_custom_template_ اشغال کرده است. به طور کلی شما باید بتوانید نام این کوئری ها بیابید و همچنین به سرور برای دسترسی به نقاطی از پوستهها و افزونهها دسترسی داشته باشید. اگر دسترسی دارید ، از طریق دستور grep زیر بررسی کنید که آیا میتوانید این کوئریها را پیدا کنید یا خیر! شما همچنین میتوانید از طریق درگاههای SFTP نیز این رکوردها را بررسی کنید.
grep -Ri "wpurp_custom_template_"
اگرچه در بعضی از سرورها این روش کارایی ندارد ، ما توانستیم با جستوجویی ساده در گوگل دریابیم که این کوئری به افزونهای تحت عنوان WP Ultimate Recipe مربوط است. این کوئری یک نمونه از غیرضروریترین کوئریهای autoload شده در وردپرس می باشد. بنابراین اگر چنین افزونهای در لیست افزونههای خود دارید سعی کنید که آن را به طور کامل حذف کنید. درواقع ، منظور ما پاکسازی کامل افزونه و هرچیزی که تا به حال در پایگاه داده تولید کرده است میباشد.
um_cache_userdata_
نوع بعدی دادههای پرمصرف به دادههای um_cache_userdata_# مربوط میشود، این دادهها را در چند سطر از لیست 10 داده پر مصرف autoload بالا در میبینید.
با توجه به اینکه چند داده um_cache_userdata_ در پایان لیست قرار دارند . ما به سرعت وارد MySQL خود شده و با دستور زیر 40 کوئری Autoload پر مصرف مربوط به این داده را فراخوانی میکنیم.
SELECT option_name, length(option_value) AS option_value_length FROM wp_options WHERE autoload='yes' ORDER BY option_value_length DESC LIMIT 40;
و یا مجموع تمامی مقادیر بالا مربوط به آن پیشوند :
SELECT 'sum size in KiB', ROUND(SUM(length(option_value))/1024,0) FROM wp_options WHERE autoload='yes' AND option_name like "um_cache_userdata_%"
اگر متوجه شدید که تعداد بیشتری کوئری وجود دارد ، دوباره مجبورید در بین افزونهها و پوستهها جستوجو کنید و دستور grep مخصوص آن را اجرا کنید.
grep -Ri "um_cache_userdata_"
با توجه به جستوجویی که ما انجام دادید دریافتیم که این داده مربوط میشود به افزونه معروف Ultimate Member و پس از جستوجویی کوتاه در گوگل راهی ساده برای حل مشکلات این افزونه نیز پیدا کردیم. سعی کنید قدرت جستوجو و تحقیق با گوگل را تمرین کنید تا به راحتی بتوانید نیازهای خود را در یک سرچ هدفمند پیدا کنید.
در جستوجو متوجه شدیم که برای حل مشکلات این افزونه چندین راه وجود دارد
- Ultimate Member > Dashboard > User Cache > Clear Cache
- Ultimate Member > Settings > Advanced > گزینه Stop caching user’s profile data را فعال کنید > سپس تغییرات را ذخیره سازی کنید.
گزینه دیگر برای پیداکردن گزینه های autoload کلیک روی کلید ویرایشگر است که میتواند لیست پوستهها/افزونهها و یا لیست وب سایت توسعه دهندگان آنها را به شما نمایش دهد.
Cron Jobs
یکی دیگر از گزینههای پرمصرف در بخش autoload استفاده مکرر Cronjobs ها میباشد. در این مورد، هر Cron ممکن است در این مسئله دخیل باشد، بنابراین هنگامی که ممکن است با کلیک روی کلید ویرایش وب سایت خراب شود ، باید چهکار کنیم ؟
برای مثال یک کوئری بسیار پرمصرف در وب سایت های وردپرسی کوئری Cron تحت عنوان do_pings میباشد که شما با یک جستوجوی ساده میتوانید نحوه پاکسازی این نوع کوئریها را پیدا کنید، اگر با نحوه کار و پاکسازی آن اشراف کامل را ندارید این مورد را نادیده بگیرید، یا قبل اجرا بک آپ در دیتابیس خود تهیه نمایید.
پاکسازی جدول wp_options
اگر تعداد زیادی از نمونههایی که در بالا به شما نشان دادیم را مشاهده کردید ، حالا وقت آن است که شروع به پاکسازی تمامی دادههای autoloaded کنیم. این نکته بسیار پیشنهاد میشود که تا جای ممکن سعی کنید که تعداد سطر های جدول wp_options شما در کمترین حالت ممکن باشد. لطفا سعی کنید قبل از هرگونه پاکسازی یا ایجاد تغییرات در پایگاه داده خود از آن نسخه پشتیبان تهیه کنید. اگر امکان این کار را ندارید ، پیشنهاد میکنیم یک متخصص حرفهای استخدام کنید.
مانند اولین نکتهای که به شما گفتیم ، برای پاکسازی جدول wp_options باید ابتدا وارد phpMyAdmin شوید. از منو سمت چپ پایگاه داده وردپرس خود را انتخاب کنید و وارد سربرگ SQL شوید. سپس دستور زیر را وارد کنید و روی کلید GO کلیک کنید.
SELECT * FROM `wp_options` WHERE `autoload` = 'yes'
این دستور به شما تمامی دادههای جدول wp_options را که در آنها autoload بر روی yes ذخیره شده است را نمایش میدهد.
با اسکرول کردن سطرها به ترتیب تمامی افزونههایی که در حال حاضر نصب یا درحال استفاده نیستند را مشاهده میکنید. به عنوان نمونه در این آموزش ما سطرهایی از افزونه Jetpack توسعه داده شده توسط وردپرس را بررسی میکنیم.
به عنوان مثال در حال حاضر وب سایت از افزونه Jetpack استفاده نمیکند.
همیشه بهتر است قبل از انجام هرکاری مستندات ارائه شده توسط توسعه دهندگان افزونهها را بررسی کنید ، گاهی اوقات در بعضی از مستندات توسعه دهنده میگوید که چطور جداول گذشته را پاکسازی کنید یا شاید گزینهای برای پاکسازی پایگاه داده در تنظیمات افزونه قرار داده بود. در بعضی اوقات بهتر است که ابتدا یک بار افزونه را حذف کنید و دوباره نصب کنید و سپس بررسی کنید که آیا کوئریهای پایگاه داده آن پاکسازی شده است یا خیر و سپس در صورتی که پاک شده بود آن را به طور کامل حذف کنید. با این حال ، در این مقاله ما به شما آموزش میدهیم که چطور به صورت دستی جداول را پاکسازی کنید.
برای مثال در دستور زیر ، ما تمامی دادههای autoload درون wp_options را که مخصوص افزونه jetpack هستند را فراخوانی میکنیم:
SELECT * FROM `wp_options` WHERE `autoload` = 'yes' AND `option_name` LIKE '%jetpack%'
سپس روی کلید Select All کلیک میکنیم و روی Delete کلیک میکنیم تا به طور کامل جداول حذف شوند.
یا شما میتوانید به صورت مستقیم با دستور زیر اقدام به حذف کوئریها کنید:
DELETE FROM `wp_options` WHERE `autoload` = 'yes' AND `option_name` LIKE '%jetpack%'
حالا شما میتوانید با تغییر options_name به عنوان افزونه و یا پوسته قدیمی خود داده های autoload شده جدول را پاکسازی کنید.
پاکسازی گذرا
اگر از یک حافظه کش استفاده میکنید، وردپرس رکوردهای گذرا یا transient را در خود جدول wp_options ذخیره میکند. به طور کلی این نوع رکوردها باید زمان انقضایی داشته باشند و در طول زمان پاکسازی شوند ، با اینکه ، همیشه اینطور نیست. در حال حاضر پایگاههای دادهای وجود دارد که بیشتر از هزاران رکورد transient قدیمی را در خود نگاه داشتهاند. باید توجه داشته باشید که رکوردهای transient به صورت پیشفرض به صورت خودکار بارگیری نمیشوند.
شما میتوانید از دستور زیر برای مشاهده رکوردهای transient خودکار بارگیری شده استفاده کنید :
SELECT * FROM `wp_options` WHERE `autoload` = 'yes' AND `option_name` LIKE '%transient%'
به هر حال ، شما میتوانید از افزونه Transient Cleaner نیز برای پاکسازی دادههای گذرا از پایگاهداده خود استفاده کنید.
یک شاخص برای Autoload اضافه کنید
اگر پاکسازی دادههای جدول wp_options کافی نبود ، شما بهتر است که از یک شاخص برای autoload استفاده کنید.
این کار اساسا کمک میکند که جستوجوی شما کارآمدتر شود.
تیم تست به نام 10آپ ، چند آزمون مختلف بر روی جدول wp_options با رکوردهای autoload شده انجام داده است تا نمایش دهد که چطور با افزودن یک شاخص به کوئریهای wp_options میتوانیم در عملکرد وب سایت بهبود بخشیم.
افزونه Little Bizzy یک افزونه کاملا رایگان وردپرسی است که با اضافه کردن شاخصی برای autoload جدول wp_options با استفاده از wp_cron برای گزارش روزانه میتواند به شما بسیار کمک کند.
امیدوارم این مقاله برای شما دوستان مفید بوده باشه، جهت بهبود سئو سایت خود میتوانید آموزش سئو سایت میزفا را مطالعه نمایید.
برخی از تصاویر و متنها از سایت kinsta گرفته شده است.
14 پاسخ
تشکر از شما خیلی کمکم کرد
سلام. داداش گلم کامنت گذاشتم که بگم خدا مرده هاتو بیامرزه و زنده هاتو واست نگه داره. سایت خبریمون خیلی سرعت وردپرسش کم شده بود و امروز کلاً سی پی یو چسبیده بود روی 100 درصد. خلاصه بعد از 8 ساعت بررسی فهمیدم مشکل از wp option هست که با راهنمایی های شما توی این پست مشکل حل شد و سایت اومد بالا. خنده دارش اینه که من میخواستم هاست رو ارتقا بدم چون هی ارور کمبود منابع میداد. ممنونم از راهنماییهاتون.
سلام امیر عزیز، خیلی خوشحالم که این مقاله بهت کمک کرده.
انشالله که دیگه به مشکل نخورید و ممنون از کامنت زیبات.
سلام. خسته نباشید.
سپاس بابت این آموزش عالی.
داخل دیتابیس اصلی سایت بنده هم یکسری موارد وجود داره که مربوط به افزونه هایی که پاک کردم هستند. امکان حذفشون وجود داره؟
سلام مهدی عزیز، بله امکانش وجود داره. افزونه wp optimize هم فکر کنم بتونه کمکت کنه.
سلام مهدی.
میتونید پاک کنید ولی حتما قبلش بک آپ تهیه کنید و پیشنهاد میشه اگر تا الان این کار نکردید به یک برنامه نویس حرفه ای بسپارید.
موفق باشید.
درود
وقت بخیر
این جدول روتوی دیتابیس من چک کردم و 6.3 مگابایت حجم داره
منتها گزینه ای به نام دیلت توی جداول Wp-Options من پیدا نمیکنم
ممنونم میشم یه راهنمایی بفرمائید
سلام. قبل از هرکاری بک آپ تهیه کنید. در جداول گزینه ای وجود داره به نام Drop که همون کار دیلیت رو میکنه.
پایدار باشید.
درود
ممنونم قربان
اما متآسفانته این مورد رو هم نداریم
لینک زیر رو چک کنین قربان تصویری از همون پایگاه داده و جدل wp-option گرفتمکه هیچ چیزی برای ویرایش نداره و فقط میتونیم بخونیم متنهارو
درود بر شما
لطفا این مورد رو به یک متخصص بسپارید تا براتون انجام بده. متاسفانه اما و اگر زیاد داره و در قالب کامنت امکان راهنمایی بیشتر نیست. هر چند سعی خواهیم کرد در آینده مقاله موجود آپدیت کنیم و این مورد اضافه کنیم.
موفق و پایدار باشید دوستم.
سلام مهندس جان
ممنون از اموزش خوبتون. واقعا کارتون درسته
من این جدول را در دیتاببیس خودم چک کردم حدود یک گیگ حجم داره. ممنون میشم اگه عمل بهینه کردن این جدول را انجام دهید چون خودم مبتدی هستم ومیترسم یه جا کارو خراب کنم.
درود بر شما، خواهش میکنم
میتونید در قسمت خدمات افزایش سرعت درخواست ارسال کنید و به موضوع دیتابیس هم حتما اشاره کنید تا دوستان بررسی کنند.
ممنون از مطلب بستار خوب شما
خواهش میکنم، موفق و پیروز باشید.