Автозагрузка (autoload) — это механизм WordPress, который позволяет загружать определённые опции из базы данных при каждой загрузке страницы. По умолчанию WordPress загружает все опции с параметром autoload = 'yes', что удобно, но со временем может сильно замедлить сайт из-за большого объёма данных.
Что такое autoload в WordPress и почему его стоит контролировать
В таблице wp_options есть колонка autoload, которая принимает значения 'yes' или 'no'. Опции с 'yes' загружаются автоматически при каждом запуске WordPress, что удобно для часто используемых настроек. Однако, если в базе данных скопилось слишком много автозагружаемых опций, это приводит к увеличению объёма данных, которые надо загрузить при каждой странице, что негативно сказывается на производительности.
Контроль autoload — важная оптимизация, особенно для сайтов с большим количеством плагинов и кастомных настроек, которые могут создавать свои опции без ограничения autoload.
Самый простой способ проверить, сколько памяти занимает автозагрузка — выполнить SQL-запрос:
SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options WHERE autoload = 'yes';
Если размер превышает 1-2 Мб, стоит задуматься об оптимизации.
Как найти и отключить ненужные autoload опции
Главная задача — определить, какие опции с autoload = 'yes' не используются на сайте и могут быть отключены.
Для этого можно:
- Использовать плагин Clearfy Pro, который умеет показывать опции с autoload и позволяет управлять ими (подробнее с UTM: Clearfy Pro на WPSHOP).
- С помощью SQL-запроса получить список самых больших автозагружаемых опций:
SELECT option_name, LENGTH(option_value) AS size
FROM wp_options
WHERE autoload = 'yes'
ORDER BY size DESC
LIMIT 20;
После выявления подозрительных опций нужно внимательно проверить, действительно ли они не используются. Для плагинов лучше проверить их настройки или документацию.
Пример отключения autoload с помощью кода
Для изменения параметра autoload для конкретной опции можно использовать функцию update_option с помощью прямого SQL-запроса, так как WordPress не предоставляет стандартного API для изменения autoload:
function wpcheck_update_option_autoload($option_name, $autoload) {
global $wpdb;
if (!in_array($autoload, ['yes', 'no'], true)) {
return false;
}
$result = $wpdb->update(
$wpdb->options,
['autoload' => $autoload],
['option_name' => $option_name],
['%s'],
['%s']
);
return $result !== false;
}
// Отключить autoload для опции example_option
wpcheck_update_option_autoload('example_option', 'no');
Этот код можно добавить в файл плагина или в functions.php вашей темы для разовой корректировки.
Использование плагинов для управления autoload
Если хотите удобный интерфейс и безопасное управление, рекомендую обратить внимание на следующие плагины:
- Clearfy Pro — кроме оптимизации autoload, предлагает множество инструментов для очистки и ускорения WordPress (ссылка с UTM: Clearfy Pro на WPSHOP).
- Plugin Organizer — позволяет отключать плагины на определённых страницах, что косвенно уменьшает нагрузку, но и помогает управлять автозагрузкой.
- Advanced Database Cleaner — помогает очистить базу от мусора и оптимизировать autoload.
Использование плагинов особенно полезно, если вы не хотите рисковать напрямую меняя базу данных.
Практические рекомендации по работе с autoload
Для поддержания высокой производительности сайта:
- Регулярно проверяйте размер данных с autoload = 'yes'.
- Удаляйте или отключайте autoload для опций, которые не используются. Особенно это касается плагинов, которые вы удалили, но их настройки остались.
- При разработке собственных плагинов и тем используйте autoload только для действительно часто используемых настроек.
- Мониторьте нагрузку на базу с помощью WPCheck (WPCheck), чтобы вовремя заметить проблемы.
Пример правильного добавления опции с autoload
function wpcheck_add_option_autoload($name, $value, $autoload = 'no') {
global $wpdb;
$exists = get_option($name);
if ($exists === false) {
$wpdb->insert(
$wpdb->options,
[
'option_name' => $name,
'option_value' => maybe_serialize($value),
'autoload' => $autoload
],
['%s', '%s', '%s']
);
} else {
update_option($name, $value);
}
}
// Добавляет опцию с автозагрузкой только при необходимости
wpcheck_add_option_autoload('wpcheck_custom_option', 'some value', 'no');
Этот пример показывает, как можно контролировать autoload при добавлении собственных опций.
Заключение
Отключение ненужных autoload опций — простая, но эффективная оптимизация, которая помогает существенно снизить нагрузку на базу данных и ускорить загрузку страниц WordPress. Используйте SQL-запросы для анализа, дополняйте их удобными плагинами и аккуратно меняйте autoload опции через код. В сочетании с мониторингом производительности через WPCheck ваш сайт будет работать быстрее и стабильнее даже при большом количестве плагинов и настроек.