Показываем заказчику, как быстро теперь работает каталог. Открываем DevTools, чтобы показать заголовки, — и получаем MISS. Прямо на демо. Ячейка была прогрета, но не та.

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

Почему DevTools дали MISS

Открытая панель DevTools сужает окно браузера. Скрипт каталога выбирает число карточек под ширину окна — и отправил другой набор параметров. Прогрев грел набор для полной ширины. Для сервера это другая ячейка, и её никто не грел.

Посетители с узким экраном получали тот же MISS каждый день — просто никто не открывал DevTools.

Ещё два расхождения

  • не тот тип записей. Прогрев грел пагинацию записей типа «запись», а статьи на сайте жили в отдельном типе. Пагинация статей не прогревалась никогда;
  • не та группировка. Сетка группирует карточки по рядам, поэтому 259 товаров — это 5 страниц на компьютере и 8 на телефоне. Прогрев считал одинаково для обоих.

Правило

Параметры прогрева брать из серверной разметки, а не из кода прогрева. Если блок в разметке объявлен с data-type="articles" и data-count="12", прогрев читает их оттуда (седьмая часть). Код прогрева не должен знать, какие параметры шлёт фронт, — он должен их прочитать.

Для параметров, которые зависят от ширины окна, источник — реестр живых запросов: какие наборы реально приходили от посетителей, те и греются.

Как проверить совпадение

  1. открыть страницу в браузере на нескольких ширинах окна, включая узкую;
  2. на вкладке «Сеть» сравнить тело ajax-запроса блока с ключом прогретой ячейки — побайтно;
  3. каждый запрос должен дать HIT.

Блоки прогреты, а у части посетителей всё равно медленно?

Пришлите адрес — сверю параметры прогрева с тем, что шлёт фронт.

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

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

Комментарии

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

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