~ / blog / kesh

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

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

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

SWR не спасает холодную ячейку: фильтры надо засевать заранее

Устаревшее можно отдать мгновенно, отсутствующее — нет. Фильтр на 22 категории: 18 из 22 MISS по 1,93 с. Засев по категориям на редких событиях, точечный — на обмене, и почему счётчику терминов верить нельзя. Сортировки не греем.

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

Устройство воркера обхода: прямо в nginx, Host и X-Forwarded-Proto

Обходчик идёт не через публичный домен, а прямо в nginx сайта. Без X-Forwarded-Proto в кэш ложатся http-ссылки, без точного имени контейнера греется кэш соседа. Бюджет, обрыв, замок и потолок очереди.

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

Голодание хвоста очереди прогрева

Волны обмена каждые ~10 минут заново ставили первые страницы категорий вперёд — вторая–шестая не рендерились никогда, MISS 0,9–2,3 с спустя часы. Резерв в бюджете прогона под дальние страницы и порядок приоритетов.

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

Перечень адресов для прогрева обязан выводиться сам

Ручной список потерял архив каталога на двух сайтах. Три источника: перечисление из WordPress, карта сайта и самоочистка по коду ответа — почему пятисотку запоминать нельзя. Бонус: отчёт о 33 адресах с 404 в карте сайта.

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

Реестр, который может только расти, и решение не сокращать ячейки

Прогрев сам продлевал ячейкам жизнь: 31 115 из 31 115 «тронуты за сутки». Когда отметки перестали врать — 24 264 холодных, 88 % из них один блок. И почему мы греем всё видимое, хотя посетители трогают 55 ячеек в час.

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

Зачем обход сайта, если есть инвалидация

Свежесть даёт инвалидация, а обход нужен для другого: после массового сброса первым посетителем должны быть мы, хвост редких страниц надо защищать от вытеснения, а из разметки обходчик собирает реестр блоков.

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

Сторож полноты кэша: сверка раз в 5 минут за 0,05 секунды

Сверять версию кода, а не наличие: после выката все ячейки на месте, но холодные. LIKE по значению — 10,79 с, время истечения минус срок — 0,05 с с точностью 99,7 %. Перечень теми же функциями, что очередь: 1202 против 1156 — это дыра.

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

После выката закэшированные страницы ссылаются на удалённые скрипты

Выкат удалил старые бандлы с хэшем в имени, а страница в кэше ссылалась на них: 4 из 10 файлов отдавали 404, формы не работали. Почему сброс не всегда спасает, как защититься и проверка одной командой.

· · ·

$ tail -f /blog

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

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

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

или на почту

связаться

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