Лучшие практики хранения агрегированных данных по дате или другим критериям
Я создаю сводные описания по годам. Для этого при сохранении использую update_post_meta
чтобы установить значения количества слов, изображений и внешних ссылок.
Для страницы архива по годам я перебираю каждую запись, чтобы создать суммы, а затем форматирую результат.
С кэшированием я могу быть уверен, что пользователи получат закэшированные результаты.
Но во время разработки с включенным кэшированием я заметил некоторую медлительность.
Я рассматривал возможность использования механизма cron для создания HTML-сводок в подкаталоге папки wp-content
или в виде элементов wp_object_cache
с именами типа summary-YYYY.html
для сводки или summary-YYYY.json
.
Мой вопрос:
Какие у меня есть варианты для хранения подобных данных? Существуют ли лучшие практики для именования ключей в объектном кэше? Есть ли другие способы ассоциировать произвольные данные с годом?

Я остановился на использовании wp_cache_set
и wp_cache_get
, что, кажется, работает хорошо. Я создаю ключ на основе класса, функции и параметров:
$cacheKey = self::createCacheKey( __CLASS__, __FUNCTION__, $referenceYear, $referenceMonth );
Метод createCacheKey()
выглядит так:
protected static function createCacheKey( ...$args ): string {
return implode('-', $args);
}
И я обязательно указываю подходящее время жизни кэша. Для дат, которые не относятся к текущему году или месяцу, я устанавливаю более длительные сроки хранения.
Получение и возврат кэша выглядит так в начале функции:
$cacheKey = self::createCacheKey( __CLASS__,
__FUNCTION__,
$referenceYear,
$referenceMonth );
$cache = wp_cache_get( $cacheKey, self::CACHE_GROUP );
if ( $cache ) {
return $cache;
}
А в конце этих функций я использую:
wp_cache_set( $cacheKey, $output,
self::CACHE_GROUP, $cacheExpiration );
Кажется, это работает так, как я хотел, и улучшает производительность, хотя видно, что место, куда по умолчанию сохраняются данные, и насколько это надежно, зависит от конфигурации сервера.
