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

Это двадцатая часть цикла «Кэш страниц без MISS».

Детектор по манифесту сборки

Каждая сборка фронта пишет манифест — файл со списком собранных бандлов. Время его изменения меняется ровно при выкате новой сборки. Тема сравнивает это время с сохранённым значением:

add_action('wp_loaded', function () {
    $manifest = get_theme_file_path('assets-dist/manifest.json');
    $sig = (string) @filemtime($manifest);
    if ($sig === '' || $sig === get_option('cache_asset_sig')) {
        return;
    }
    update_option('cache_asset_sig', $sig, false);
    error_log('cache: manifest changed → full purge');
    cache_purge_all();
    do_action('cache_purged'); // сигнал: поставить круг прогрева
});

Проверка срабатывает на любом запросе к PHP — и от живого посетителя, и от системного крона раз в минуту. Поэтому выкат замечается в течение минуты, даже если посетителей нет.

Подтверждение на рабочем сайте: выкат в 11:15, строка «manifest changed → full purge» в журнале — в 11:17:09, ровно одна за неделю.

Сигнал после сброса

Сброс без прогрева — тот же MISS, только массовый. На одном сайте выкат шёл в обход действия, на которое был подписан прогрев, — кэш чистился, а круг обхода не вставал. Нужно отдельное действие «сброс выполнен», и прогрев вешается на него.

Как мы ошиблись в диагнозе

В какой-то момент мы решили, что выкат вообще не сбрасывает кэш: поиск по конфигурации CI нашёл ноль упоминаний кэша. Вывод был ложным — сброс живёт в теме, а не в CI. Мало того, на одном сайте тот же механизм назывался по-другому, и поиск по привычному имени его не находил.

Ищите по нескольким именам и по сути — «где сравнивается время манифеста», — а не по одному названию опции.

Сколько наполняется кэш после выката

На каталоге среднего размера — около полутора часов. Холодный рендер в двух вариантах устройства занимает 3–4 секунды на адрес, прогон обхода (~46 с) успевает 5–17 адресов. Через 8 минут после выката прогрето 22 % страниц — главная и самые посещаемые товары идут первыми.

Заказчик решил не ускорять: остальное время посетители получают уже прогретые важные страницы, а хвост доходит за полтора часа.

Мерить без запросов к сайту. Каждый проверочный запрос сам прогревает страницу, и замер начинает врать. Число прогретых считайте по строкам KEY: в файлах кэша (пятая часть).

После выката сайт долго медленный?

Пришлите адрес — проверю, как у вас устроены сброс и прогрев после выката.

· полезно?
АЧ
Алексей Чикун веб-разработчик, команда TRIOHEAD

Делаю сайты и сервисы целиком: от вёрстки до сервера. Пишу о том, что проверил на своих проектах.

Комментарии

// загружаю комментарии…

Комментарии публикуются после проверки. Ссылки и HTML не принимаются.