Перечень выводится сам, обходчик надёжен, очередь не умирает — и всё равно кто-то получает MISS. Обычно потому, что ключ кэша шире, чем то, что греет обходчик. Три места, где мы это находили.
Это тридцать четвёртая часть цикла «Кэш страниц без MISS».
1. Региональные поддомены
Хост входит в ключ кэша (шестая часть). У каталога с региональными поддоменами каждая страница существует в каждом регионе — а обходчик ходил только по основному домену. Первый заход на страницу поддомена — 2,48 секунды.
Сначала поддомены сознательно не грели: «их много, а посещают их редко». Позже решение пересмотрели — греть всё, что видит посетитель. Объём это увеличивает, но ровно для этого потолок кэша и подбирается под число ключей (пятая часть).
2. Языковая кука
Язык был в ключе кэша, а обходчик ходил без куки — грел только язык по умолчанию. Посетитель, выбравший другую страну, на каждой странице шёл мимо кэша.
Лечение — обходчик перебирает варианты так же, как точечная чистка (тринадцатая часть): два User-Agent × (без куки + каждый язык).
Правило сверки: выпишите всё, что входит в fastcgi_cache_key, и для каждого измерения проверьте, перебирает ли его обходчик. Всё, что в ключе, но не в обходе, — гарантированный MISS у части посетителей.
3. Публичные типы без своих страниц
Обратная проблема: тип записей зарегистрирован как публичный, но своих страниц у него нет — WordPress рисует ссылку, которая ведёт на 404. Обходчик греет мусор, а самоочистка (двадцать восьмая часть) его вычёркивает.
Решить, нужны ли такие страницы, может только заказчик: возможно, тип должен быть закрытым, а возможно, страницы нужны, но не свёрстаны. До решения такой тип стоит в исключениях обхода.
Что мы по-прежнему не греем
Сортировки. Их варианты умножаются на все страницы пагинации и на все фильтры, а заходят на них редко. Отдать редкий MISS здесь дешевле, чем держать всё это тёплым.
Часть посетителей жалуется на скорость, а у вас всё быстро?
Пришлите адрес — сверю ключ кэша с тем, что греет ваш обходчик.
// загружаю комментарии…