~ / blog / kesh

Кэширование — страница 5

Кэш страниц в nginx, фрагменты в Redis, автоматический обходчик и сброс при выкате: как отдавать сайт мгновенно и не показывать посетителю старое.

#Кэширование 2 мин

Сброс кэша при выкате: детектор по манифесту сборки

Тема сравнивает время манифеста сборки с сохранённым и при расхождении сбрасывает кэш — ловит и живой запрос, и крон. Почему нужен сигнал после сброса, как мы ложно решили, что выкат не сбрасывает, и сколько наполняется кэш (22 % за 8 минут).

· · ·
#Кэширование 2 мин

Правка шаблона не сбрасывает кэш, и очистить не помогает с первого раза

Ячейка блока обновляется по версии кода, версии данных или времени записи — правка PHP-шаблона не меняет ничего. Сброс делает ячейку устаревшей, и первое открытие показывает старое: это защита от MISS. Рецепт для разработки.

· · ·
#Кэширование 2 мин

Что обязано входить в ключ ajax-блока

Хост — иначе воркер пишет телефоны основного сайта в ячейки поддомена. Мобильность из User-Agent — строка false прошла isset, и десктоп получал мобильную сетку. Параметры формы — иначе все видят товар первого открывшего.

· · ·
#Кэширование 1 мин

Правки из админки — сразу, поток 1С — через дебаунс

Человек ждёт «сохранил и вижу», обмен 1С шлёт сотни сохранений волной. Сброс сразу в конце запроса для админки и пачкой через минуту для обмена; как различить источник одной функцией и проверить без правки контента.

· · ·
#Кэширование 2 мин

От версий в ключе к stale-while-revalidate

Версия в ключе — бесплатная инвалидация, но до 3 ГБ сирот в сутки и MISS после каждого сброса. Версии в значении: смена кода — MISS, смена данных — STALE и горячая задача. Версии по разделам и срок жизни 7 дней.

· · ·
#Кэширование 2 мин

Перешли на кэш на неделю — нашли четыре класса дыр в инвалидации

Мета приходит после save_post, пропуски ради анти-шторма с умершим обоснованием, производные меты без подписи значений и настройки в шапке каждой страницы — поддомен неделю показывал пустой контакт. Что чинили и какой вопрос задавать.

· · ·
#Кэширование 2 мин

Почему ajax-блокам нужен свой кэш

admin-ajax — это POST с no-store, nginx его не кэширует: сетка на 24 карточки — 2 с, пагинация — 2,2 с. После своего кэша — 0,2 с. Главный приём: чистая функция рендера, которую зовут и ajax, и фоновый воркер.

· · ·
#Кэширование 1 мин

Анти-шторм, завязанный на функцию, которой нет

Код чистки пропускал сброс в расчёте на внешнюю функцию, а её не перенесли: страницы товаров не сбрасывались никогда. Итог — карточки без картинок на телефоне. Как проверили починку и почему тихий пропуск хуже ошибки.

· · ·
#Кэширование 2 мин

Анти-шторм: сбрасывать кэш только по реальным изменениям

Пустые сохранения обмена, дрожь порядка (~5000 сбросов в сутки), счётчики просмотров (2,2 ГБ сирот за ночь). Подпись значимых полей, обратная ловушка — правки контентщика перестали появляться — и телеметрия причин сбросов.

· · ·

$ tail -f /blog

Не пропустите новые статьи

Пишу разборы по скорости сайтов, кэшу и разработке — на живых проектах и с цифрами. Подпишитесь, и ссылка на новую статью придёт сразу после выхода. Без рекламы и спама, отписаться — в один клик.

В Telegramодна кнопка «Старт» в боте

или на почту

связаться

Расскажите о задаче