Поддержка Проблемы и решения Вопрос производительности и экономии

  • Задумался над очередной оптимизацией производительности своих плагинов.
    Нужен совет/мнение тех, кто знает.
    Вводные:
    Сейчас в моём плагине все опции имеют статус autoload — yes
    Соответственно тянутся wp_load_alloptions(), за то при обращении к ним get_option не расходует запросы к базе.

    Теперь такой момент. Предположим я всем поставлю autoload — no
    1. Я верно понимаю, что в этом случае, если в какой-то момент времени у меня возникает необходимость в получении 20-и запросов (get_option(‘opt1’); get_option(‘opt2’); и тд), то я соответственно получу сразу 20 лишних запросов к базе?
    2. Я верно понимаю, что если мы делаем:
    add_option(‘opt2’, …. ‘no’ );
    А потом сделаем
    get_option(‘opt2’);
    get_option(‘opt2’);
    get_option(‘opt2’);
    То получим 3 запроса к базе?

    3. Как меньше будет жрать нагрузку в моменте работы скрипта?
    Если мы сто переменных объединим в массив, сериализуем, запихнём в
    add_option(); потом вытащим через get_option(); и десериализуем

    или же если мы каждую переменную поместим через add_option(… ‘yes’), а потом также извлечём через каждую из них get_option();

    В общем суть моих вопросов по факту сводятся к тому, как экономнее всего записывать и извлекать опции плагина (в плане нагрузки как процессорной, так и БД)

    Предположим у вас есть 100 опций. Вашему скрипту в моменте может требоваться как значения всех 100, так и половина (внутри скрипта множество if)
    Как бы вы хранили и извлекали данные если цель стояла в экономии ресурсов именно в момент работы скрипта?

    • Тема изменена 3 года, 5 месяцев назад пользователем icopydoc.
Просмотр 1 ответа (всего 1)
  • 1. Да. Но если это суточный например крон — то не жалко.
    Хотя может есть смысл опции в сериализованном массиве (и без autoload) хранить.

    т.е. надо понимать какой это момент времени — если это, к примеру, хук init — то autoload yes лучше чтоб было. Если что-то более редкое — как пример с кроном, или хук регистрации/логина — то автолоад тут отключаем.

    2. Так проверь в цикле))
    с автолоадом кеширует, без него — нет.

    3. смотря сколько данных в массиве. И какой объем они занимают. Тут собственные замеры проводи.

    100 настроек в один момент мне на моем опыте никогда нужны не были.

    Если 10-ть мелких настроек — и нужны они в момент реги к примеру — я их в сериализованный массив с отключенным автолоадом

    а так — я не люблю комбайны, верней когда у них сотни настроек. Для частых — да, настройки и опции нужны. Для всего остального (более частные случаи) система хуков и фильтров.

    принципы KISS почитайте.

Просмотр 1 ответа (всего 1)
  • Тема «Вопрос производительности и экономии» закрыта для новых ответов.