Производительность опций в WordPress

Опубликовано: 06.10.2017

видео Производительность опций в WordPress

Как настроить меню "специальные возможности". Опция "Зрение."

Таблица с опциями в WordPress содержит все настройки вашего сайта, тем и плагинов. В ней могут храниться как простые флажки (да/нет), так и данные более крупных размеров, иногда даже логи. API для работы с опциями в WordPress очень простой, его можно резюмировать в две строки:



update_option( 'foo', 'bar' ); // сохранить опцию с названием foo $foo = get_option( 'foo' ); // получить опцию foo

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


WINDOWS 10 – БОЛЬШЕ FPS В ИГРАХ !

Fatal error: Allowed memory size of 134217728 bytes exhausted

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

Как работают опции в WordPress

В WordPress есть таблица wp_options, ее структура достаточно простая:


Опция — Align New Objects to Pixel Grid

+-----------+-------------+-------------------+----------+ | option_id | option_name | option_value | autoload | +-----------+-------------+-------------------+----------+ | 1 | siteurl | http://develop.lo | yes | +-----------+-------------+-------------------+----------+

При обращении к функции get_option() в WordPress, мы получаем значение опции по ключу из базы данных, но здесь стоит помнить одну очень важную вещь: опции с флажком autoload подгружаются в память автоматически при загрузке ядра WordPress, за это отвечает внутренняя функция wp_load_alloptions() .

Это значит, что при обращении к опции siteurl в нашей теме или в плагине WordPress, результат будет выдан сразу из кэша объектов , а не из базы данных MySQL.

Такой подход является безусловным плюсом для тех опций, которые мы (ядро, наша тема, наши плагины) намерены использовать для отображения текущей страницы в WordPress. Это предотвращает лишние походы в базу данных MySQL за каждой требуемой опцией.