«на хостинге есть возможность использовать redis или memcached?» — нельзя. Ответ хостера — К сожалению, работа memcached и redis не реализована на услугах виртуального хостинга в целях безопасности. Установка данного ПО возможна только на услугах VPS.
А это помогло бы?
Ну, если сервер более мощный, памяти больше, возможно и помогло бы. По бюджету, конечно слегка ударит.
Не, я не про сервер, конечно сервер лучше, но он дороже. Я про redis и memcached.
Спасибо, посмотрю вечером.
Модератор
Юрій
(@yube)
А это помогло бы?
Должно бы. Однако, с кэшированием всё очень непросто. Поможет или нет — зависит от множества факторов, которые в большинстве случаев заранее предусмотреть невозможно. Поскольку кеширование само по себе тоже процесс, требующий ресурсов, бывает всякое.
Лично я бы такой ситуации попробовал сделать транзитное кэширование содержимого метабокса. (это программирование если что)))
-
Ответ изменён 7 лет назад пользователем
Юрій.
«транзитное кэширование содержимого метабокса» — это трудоемко?
Модератор
Yui
(@fierevere)
永子
https://wp-kama.ru/function/set_transient
https://wp-kama.ru/function/get_transient
достаточно просто, если хотя бы немного разбираться в коде
а еще если использовать redis/memcached, то WordPress транзиенты сохраняет туда, вместо таблицы wp_options в MySQL
Модератор
Юрій
(@yube)
это трудоемко?
Что называется «пока не сделаешь — не узнаешь«. Ни разу именно такого не делал, поэтому ничего точно не могу сказать. Это точно не три строчки кода, но и не три мегабайта.
p.s. На всякий случай напоминаю, что коммерческие предложения на этом форуме допустимы только в специально отведенном разделе.
Спасибо, буду разбираться.
Модератор
Yui
(@fierevere)
永子
Это точно не три строчки кода
вообще-то иногда и меньше ) Все зависит от того, что именно нужно кешировать, если там одно значение, то как раз три строчки и будет.
пример
проверяем наличие транзиента в кеше
$top_posts = get_transient( 'trans_evo_topposts' );
if (!$top_posts) {
если его там нет, то получаем..
и не забываем записать его в кеш
set_transient( 'trans_evo_topposts', $top_posts, 7200);
на два часа…
}
а дальше тот код, который будет работать или с свежим или с полученным из кеша значением $top_posts
Модератор
Юрій
(@yube)
как раз три строчки и будет
Не будет 😉 Еще необходимо сбрасывать/перестраивать кэш при изменении термов.
Модератор
Yui
(@fierevere)
永子
ок, +1 строчка c delete_transient() при изменении термов.
А перестроится кеш сам, при следующем запросе
А как тут транзитное кеширование поможет?
Ему же надо на странице «Добавить новую запись» закэшировать список термов, они же там запрашиваются из базы 1 раз для метабокса и более не используются. Запрос к базе в любом случае будут.
Лучше уж если заказывать разработку, то заказать новый метабокс с зависимыми select. Выбрал из списка марку, появились модели, выбрал модель.
а стандартному метабоксу
'show_ui' => false,
«Выбрал из списка марку, появились модели, выбрал модель.» — потом выбрал модель, появились поколения, это будет идеальное решение, в плане удобства.
qwert555 (@qwert555) — это трудоемко? Такое уже делали?