~ / blog / kesh

Кэширование

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

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

Всплывающая форма: из кэша и без кэша одинаково 180 мс

Почти все 180 мс — вход в WordPress, а не рендер, поэтому прогрев не помогает. Лечит фронт: параллельная загрузка, запрос вместе с анимацией, промис на вкладку и загрузка по наведению с форой 300–800 мс. И почему не грузить формы всем.

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

Выключатели прогрева и кэша для тестовых копий

Пустая тестовая копия с прогревом — около 1,5 ядра круглосуточно. Два ключа в wp-config: только прогрев или кэш целиком через X-Accel-Expires. Ворота в точках входа и грабли: сброс делает PHP, а HIT до него не доходит.

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

Токен формы в кэшированной странице: заявки теряются молча

Токен wp_create_nonce живёт сутки, разметка формы в кэше — дольше. 6 мёртвых токенов из 18 ячеек форм, мобильные страдают вдвое чаще. Как найти без отправки заявки, и решение: пустое поле, токен с некэшируемого адреса при фокусе и повтор.

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

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

Прогон 40 с, следующий — через 60 с от конца: воркер проскакивал тик крона и работал 40 секунд из 120. Каждый прогон отрабатывал полный бюджет, поэтому отчёт был зелёным. Запуск через 5 с — темп ×2,1. Мерить интервал, а не рендеры.

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

Ускоренный догрев после выката — по состоянию, а не по таймеру

Окно в 20 минут закрылось при 3118 холодных ячейках. Ограничитель прогона — время, режим держится, пока хвост больше 300: 4229 → 0 за 33 минуты при нагрузке 0,04–0,22. Потолок 3 часа и что происходит на маленьком сайте.

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

Виджет мониторинга кэша в админке: что показывать, чтобы это было полезно

Кольцо на одном CSS-градиенте, бегунки прогресса по видам блоков, отдельный бегунок горячих задач с дневным счётчиком. Чего не показывать: долю места и счётчик круга, который всегда 0. Пауза на скрытой вкладке.

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

Защита прогрева по нагрузке: ступени, а не выключатель

Сосед на общем сервере занимал 331 % CPU, порог «нагрузка ≥ 3 — пропустить» выключил прогрев на часы, молча. Ступени: треть бюджета, один рендер за прогон, пропуск только при аварии. И три гипотезы, которые замер опроверг.

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

Мёртвые поколения ключей в Redis и сколько памяти ему давать

При noeviction старые поколения не «истекут сами» — они съедят память, и Redis откажет в записи. SCAN с UNLINK: 45 611 ключей за 0,32 с, 252 → 14,65 МБ. Формула памяти на два поколения: 32 269 ячеек — 181 МБ, лимит 1 ГБ.

· · ·

$ tail -f /blog

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

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

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

или на почту

связаться

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