Можно ли сохранить полностью отрендеренный HTML-код в транзиенте?

7 сент. 2010 г., 18:45:23
Просмотры: 1.02K
Голосов: 1

У меня есть запрос, который получает около 50+ записей (я знаю, что это не идеально, но пришлось сделать по требованию клиента...) и набор циклов для их упорядочивания определенным образом. Похоже, что эта последовательность операций замедляет рендеринг страницы.

Хотелось бы закэшировать в транзиенте весь этот блок отрендеренного HTML. Возможно ли это?

4
Комментарии

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

Tom J Nowell Tom J Nowell
12 сент. 2010 г. 16:39:04

@Tom J Nowell вы путаете транзиенты с кэшем. Кэш не является постоянным (если не используется плагин), транзиенты же всегда постоянны (с плагином или без). Без плагина транзиенты хранятся в базе данных с использованием Settings API.

Rarst Rarst
17 сент. 2010 г. 07:00:51

ох, как же мне неловко, лол

Tom J Nowell Tom J Nowell
17 сент. 2010 г. 12:12:50

Ой, допустил свою собственную ошибку - Options API, а не Settings API. :)

Rarst Rarst
17 сент. 2010 г. 14:08:21
Все ответы на вопрос 2
0

Transients API в документации формулирует рекомендуемое использование следующим образом:

долгие/ресурсоемкие запросы к базе данных или сложная обработанная информация

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

12 сент. 2010 г. 16:13:53
3

Если бы мне пришлось реализовывать это сегодня, я бы предпочел использовать кеш объектов memcache, сохраняя данные с помощью wp_cache_set(), возможно, обновляя данные через WP_Cron, а не во время загрузки страницы.

О скольких килобайтах данных идет речь?

7 сент. 2010 г. 19:00:25
Комментарии

Думаю, довольно мало (меньше 10)... Проблема в том, что у меня довольно много циклов/манипуляций, чтобы отсортировать и отобразить данные нужным образом. Memcache (со всеми его настройками) выглядит слишком сложным решением.

Amit Amit
8 сент. 2010 г. 00:19:52

Транзиенты автоматически используют объектный кеш, если соответствующий плагин активен. Нет необходимости использовать wp_cache_set(), если механизм транзиентов больше подходит для задачи.

Rarst Rarst
12 сент. 2010 г. 16:15:01

Да, единственный вопрос был бы о количестве данных, которые можно разумно хранить в транзиенте. Это LONGTEXT, так что... очень много. :)

User User
12 сент. 2010 г. 16:26:04