
Две из моих любимых консольных команд WP-CLI – это profile и doctor, которые помогают администраторам сайта WordPress поддерживать сайт в безопасности и в чистоте! База данных WordPress имеет таблицу wp_options, которая используется для хранения настроек ядра, темы и плагинов. Некоторые из этих параметров очень важны для каждого компонента и должны быть автоматически загружены, чтобы обеспечить их доступность при каждой загрузке одной страницы. К сожалению, не все разработчики плагинов и тем экономно используют данные автозагрузки.
Это руководство поможет вам определить большие значения, загруженные автозагрузкой, чтобы ускорить работу вашего сайта WordPress или магазина WooCommerce. Я настоятельно рекомендую общаться с разработчиками темы или плагина с большим количеством автозагружаемых данных, чтобы они могли делать исправления, которые принесут пользу всей их пользовательской базе.
Установите WP-CLI doctor command с помощью этой команды
wp package install wp-cli/doctor-command --allow-root
Вы можете просмотреть все команды проверок, которые предоставляет doctor command
wp doctor list --allow-root
Мы будем использовать верхнюю команду: autoload-options-size
+----------------------------+-----------------------------------------------------------------------+ | name | description | +----------------------------+-----------------------------------------------------------------------+ | autoload-options-size | Warns when autoloaded options size exceeds threshold of 900 kb. | | constant-savequeries-falsy | Confirms expected state of the SAVEQUERIES constant. | | constant-wp-debug-falsy | Confirms expected state of the WP_DEBUG constant. | | core-update | Errors when new WordPress minor release is available; warns for major | | core-verify-checksums | Verifies WordPress files against published checksums; errors on failur| | cron-count | Errors when there's an excess of 50 total cron jobs registered. | | cron-duplicates | Errors when there's an excess of 10 duplicate cron jobs registered. | | file-eval | Checks files filesystem for regex pattern `eval\(.*base64_decode\(.*`.| | option-blog-public | Confirms the expected value of the 'blog_public' option. | | plugin-active-count | Warns when there are greater than 80 plugins activated. | | plugin-deactivated | Warns when greater than 40% of plugins are deactivated. | | plugin-update | Warns when there are plugin updates available. | | theme-update | Warns when there are theme updates available. | | cache-flush | Detects the number of occurrences of the `wp_cache_flush()` function. | | php-in-upload | Warns when a PHP file is present in the Uploads folder. | | language-update | Warns when there are language updates available. | +----------------------------+-----------------------------------------------------------------------+
Запустите проверку размера автозагрузки
wp doctor check autoload-options-size --allow-root
Похоже, что этот сайт содержит избыточное количество загруженных автозагрузкой данных в таблице wp_options WordPress, здесь предупреждение отображает 2,62 mb автозагружаемых данных!
+-----------------------+---------+------------------------------------------------------------+ | name | status | message | +-----------------------+---------+------------------------------------------------------------+ | autoload-options-size | warning | Autoloaded options size (2.62mb) exceeds threshold (900kb) | +-----------------------+---------+------------------------------------------------------------+
Давайте выясним, что это такое, показывая самые большие строки с автозагружаемыми данными.
wp db query "SELECT 'autoloaded data in KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM $(wp db prefix --allow-root)options WHERE autoload='yes' UNION SELECT 'autoloaded data count', count(*) FROM $(wp db prefix --allow-root)options WHERE autoload='yes' UNION (SELECT option_name, length(option_value) FROM $(wp db prefix --allow-root)options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)" --allow-root
Вот такая же команда, только отформатированная для ясности ????
wp db query "SELECT 'autoloaded data in KiB' as name, ROUND(SUM(LENGTH(option_value))/ 1024) as value FROM $(wp db prefix --allow-root)options WHERE autoload='yes' \ UNION \ SELECT 'autoloaded data count', count(*) FROM $(wp db prefix --allow-root)options WHERE autoload='yes' \ UNION \ (SELECT option_name, length(option_value) FROM $(wp db prefix --allow-root)options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 10)" --allow-root
Теперь мы получаем выходные данные из самых больших загруженных строк, здесь это wpmandrill-stats
+---------------------------------------+---------+ | name | value | +---------------------------------------+---------+ | autoloaded data in KiB | 2689 | | autoloaded data count | 937 | | wpmandrill-stats | 2274153 | | aDBc_options_status | 105519 | | _s_category_pricing_rules | 31664 | | rewrite_rules | 29788 | | _wpallexport_session_10_ | 21159 | | wp_user_roles | 12893 | | woocommerce_tracker_ua | 12272 | | 38109fa951c6516a7421d978678f9d3d | 11397 | | woocommerce_wf_shipping_usps_settings | 10606 | | _wpallexport_session_1_ | 10288 | +---------------------------------------+---------+
Я рекомендую проверять большие значения параметров, используя команду option get, мы захватываем содержимое параметра wpmandrill-stats и помещаем параметры option_value в файл /tmp/mandrill-stats.txt для проверки.
wp option get wpmandrill-stats --allow-root > /tmp/wpmandrill-stats.txt
Проанализируете option_value и найдете наибольшее значение с option_name. Если вы думаете, что он может быть логически разделен на более мелкие параметры, передайте это разработчику. Весьма вероятно, что некоторые данные должны быть загружены автоматически, но большинство нет :).
Как только вы чувствуете уверенность в том, что данные не должны быть загружены автоматически, вы можете изменить option_name, чтобы он не был автоматически загружен, изменив значение автозагрузки с «yes» на «no».
wp db query "UPDATE $(wp db prefix --allow-root)options SET autoload='no' WHERE option_name='wpmandrill-stats'" --allow-root
Теперь вы можете снова запустить команду doctor
wp doctor check autoload-options-size --allow-root
Мы добились успеха!
+-----------------------+---------+--------------------------------------------------------------------+ | name | status | message | +-----------------------+---------+--------------------------------------------------------------------+ | autoload-options-size | success | Autoloaded options size (465.35kb) is less than threshold (900kb). | +-----------------------+---------+--------------------------------------------------------------------+
Надеюсь, это помогло вам уменьшить размер загружаемых данных из баз данных WordPress ????