Производительность с автозагрузкой и таблицей опций


12

Я играю с autoloadколонкой optionsтаблицы. Я не нашел много информации о том, как используются значения автозагрузки. Я попытался print_r($GLOBALS)и увидел, что параметры автозагрузки хранятся в $GLOBALS['wp_object_cache']->cache['options']['alloptions'].

Есть ли другой способ доступа к этим переменным?

Предположим, мне нужен доступ к опции my_option, которая была установлена ​​на автозагрузку, несколько раз в разных шаблонах (например, один раз header.php, один раз в footer.php), какой метод рекомендуется?

  1. Это нормально, что я получаю его из $GLOBALSмассива (так как значение уже здесь)
  2. Должен ли я использовать get_option('my_option')один раз и снова глобализировать переменную
  3. Используйте get_option('my_option')каждый раз (что я не вижу смысла делать)
  4. Что-то другое

Ответы:


23

Я не нашел много информации о том, как используются значения автозагрузки.

Особого случая для опций автозагрузки нет, они используются так же, как и обычные опции, но давайте выясним, что означает autoloadстолбец optionsтаблицы. Этот столбец определяет, нужно ли нам извлекать опцию на этапе инициализации запроса или мы должны извлекать опцию только по требованию.

Но когда происходит эта автозагрузка и какая функция это делает? Все параметры автозагрузки загружаются и кэшируются wp_load_alloptionsфункцией, которая вызывается is_blog_installedфункцией в начале каждого HTTP-запроса, обрабатываемого WP.

Подведем итог: опция автозагрузки - это та же опция, но загружается в начале обработки HTTP-запроса WP.

Предположим, мне нужен доступ к опции ... какой метод рекомендуется?

  1. Это плохой подход, чтобы получить его $GLOBALSнапрямую, get_optionвместо этого используйте
  2. Глобализация пользовательских переменных не приветствуется и рекомендуется делать это как можно меньше
  3. С моей точки зрения это лучший вариант для вас
  4. Даже не думай ни о чем другом :)

Почему использовать get_optionфункцию каждый раз, когда это лучший вариант? Потому что:

  1. Первый и самый важный, потому что : вы можете быть уверены, что он будет возвращать актуальное значение каждый раз, когда вы его вызываете.
  2. Это кеширует это для будущего повторного использования.
  3. Это позволяет другому плагину и теме подключить ваш вариант, подключив option_optionnameфильтр.
  4. Он выберет опцию, если она еще не загружена.

1
+1 очень информативный ответ. Никогда раньше не слышал про вариант крючка :)
RRikesh

@rrikesh, добро пожаловать, надеюсь, это достаточно хорошо объясняет
Евгений Мануйлов
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.