Кэш блоков сбрасывается, когда меняются данные. А что, если данные не менялись, а поменялся файл? Миниатюра дорезалась, превью видео сгенерировалось — в базе ничего не произошло, ни один хук не сработал, а разметка в кэше уже устарела.

Это тринадцатая часть цикла «Кэш фрагментов и Redis».

Оригиналы вместо нарезки

В тему добавили новый размер миниатюры для карточек. В момент первого рендера нарезки этого размера ещё не было, и плагин миниатюр отдал в разметку оригиналы. Разметка легла в кэш — и осталась там: нарезка появилась через минуту, но кэш об этом не узнал.

Итог: 74 картинки прямо из папки загрузок, 26,6 МБ в блоках главной. Мобильная главная весила 15,75 МБ.

Будить кэш маркером

Генератор после завершения работы оставляет файловый маркер, а крон-сторож его подхватывает:

  1. генератор миниатюр или превью закончил партию — записал маркер с перечнем затронутых записей;
  2. сторож на тике крона нашёл маркер — поднял версии блоков этих записей и поставил страницы в чистку с прогревом;
  3. маркер удалён.

После трёх циклов «очередь → сброс → воркер» оригиналов в разметке стало 74 → 9 → 0. Мобильная главная — 15,75 → 2,93 МБ.

Тонкость: смена качества

Если в настройке размера поменяли качество, существующие файлы не пересоздаются сами. А если сбросить кэш раньше, чем они пересоздались, полчаса в разметке будет старый jpg на 201 КБ вместо avif на 149 КБ. Сначала дождаться генератора — потом будить кэш.

Родственная история — когда разметка с картинками без avif и webp замерзает в кэше страниц на неделю, — разобрана отдельно в цикле «PageSpeed без мифов».

В блоках сайта оригиналы картинок вместо уменьшенных?

Пришлите адрес — проверю, узнаёт ли кэш о готовых миниатюрах.

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

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

Комментарии

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

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