Загрузка...

Оптимизация WP — Автозагрузка опций

wordpress

Таблица wp_options

В wp_optionsтаблице хранится несколько типов данных для вашего сайта, в том числе:

  • настройки для ваших плагинов, виджетов и тем
  • временно кэшированные данные
  • URL-адрес сайта и домашний URL-адрес
  • настройки категории
  • автоматически загружаемые данные

Примечание

Префикс optionsтаблицы по умолчанию — wp_. Префикс optionsтаблицы может отличаться, если вы используете собственный префикс, например custom_options.

Проверьте размер ваших автоматически загружаемых данных

Если ваш веб-сайт работает медленно и вы получаете следующее сообщение в статистике базы данных: consider autoloading only necessary options, выполните следующие действия.

Проверьте размер автоматически загружаемых данных:

  1. Войдите в свой клиент MySQL .
  2. Выберите свою базу данных (по умолчанию pantheon) и нажмите на SQLвкладку.
  3. Запустите следующий код, чтобы увидеть общее количество автоматически загружаемых данных и количество данных:
    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';

Если ваши автоматически загружаемые данные меньше 1 МБ, маловероятно, что автоматически загружаемые данные замедляют работу вашего сайта. Если ваши данные превышают 1 МБ, у вас автоматически загружается большое количество параметров, и это, скорее всего, замедляет работу вашего сайта.

Проверьте свои самые популярные автоматически загружаемые элементы

  1. Запустите следующий код, чтобы увидеть самые популярные элементы с автоматически загружаемыми данными:
    SELECT option_name, length(option_value) FROM wp_options WHERE autoload='yes' ORDER BY length(option_value) DESC LIMIT 20;
  2. Запустите следующий код, если вы хотите отключить автозагрузку для элемента.
    вместо:

    update_option( 'wp_option', 'value' );

    используйте:

    update_option('wp_option', 'value', 'no');
Примечание Вы должны указать no в третьем параметре, иначе по умолчанию автоматически будет установлено значение yes.

Советы по минимизации автоматически загружаемых данных

Мы рекомендуем свести к минимуму автоматически загружаемые данные, чтобы повысить производительность вашего сайта. Ниже мы предоставили несколько советов по сокращению автоматически загружаемых данных.

Удалите транзитный кеш

WordPress Кэширует данные в Transients (транзитный кеш) в течение установленного периода времени. Хотя Transients сохраняются только временно, они могут стать чрезмерно большими и замедлить работу вашего сайта.

Запустите следующий код, чтобы очистить временные данные:

SELECT * 
   FROM `wp_options` 
   WHERE `autoload` = 'yes'
   AND `option_name` LIKE '%transient%'

Избегайте использовать транзитный кеш

Вы можете использовать кэш объектов, чтобы свести к минимуму использование временных данных внутри wp_options таблицы.

Рекомендации разработчику

Особенностью работы WP является то, что система подгружает все данные, где прописано autoload = yes. Не имеет значения разбиты эти данные, как отдельные строки таблицы или хранятся в виде serialize или json в одной ячейке.

Я рекомендую использовать json, в котором хранить все настройки для вашей темы или плагина.
Преимущества такого хранения данных:
1) В отличии от serialize. При прямом изменении вложенных данных, сериализованные данные, которые используются в WP по умолчанию, могут быть повреждены. Для изменения вложенных данных значение ячейки нужно десериализовывать, изменить и сериализовать обратно. Что проблемно и неприятно.
2) В отличии от строк. Если хранить данные настроек отдельными строками в БД, то таблица может сильно разрастись  + разрозненными данными сложно управлять. Можно забыть какая настройка относится к вашей теме или плагину, какая нет. + может быть конфликт имен. Сложнее контролировать.
3) JSON. Легче посчитать объем используемых данных настроек
4) JSON. Данными в JSON представлении проще оперировать в рамках кода. Можно вносить изменения в класс или массив настроек и сохранять как единое целое.
5) Ничего не забудешь, т.к. настройки хранятся в единой сущности (ячейке), которую проще найти и не потерять.