Сколько места нужно кэшу страниц? Интуиция подсказывает: зависит от посещаемости. На деле объём определяется не трафиком, а числом разных ключей — вариантов одной и той же страницы.

Это пятая часть цикла «Кэш страниц без MISS».

Откуда берутся варианты

Каждая комбинация того, что входит в ключ кэша, — отдельный файл:

страницы × устройство (мобильный/десктоп) × язык × варианты адреса (?utm…)

Сайт на 250 страниц с двумя версиями под устройства и двумя языками — это уже тысяча файлов, ещё до рекламных меток.

Как кэш вырос в десять раз за ночь

На каталоге с двумя языками вечером в кэше было 197 копий на 28 МБ. За ночь в ключ добавилась языковая кука, и обход прогрел все варианты: утром — 2244 копии и 293 МБ, 59 % потолка в 500 МБ. Трафик за ночь не изменился — изменилось число ключей.

Для сравнения: крупный каталог с огромным трафиком целиком занимал 70–100 МБ — у него не было языков. Каталог среднего размера после перехода на кэш на неделю вышел на полку в 399 МБ — 80 % прежнего потолка.

Почему при кэше на неделю потолок надо поднимать

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

Правило: удлинили valid — в той же правке поднимите max_size (мы ставим 1 ГБ). Посчитайте ожидаемое число ключей заранее: страницы × устройства × языки.

Как посмотреть, что лежит в кэше

# сколько копий и какие пути — по строкам KEY: в файлах кэша
grep -rah '^KEY:' /var/cache/nginx/fastcgi | wc -l
grep -rah '^KEY:' /var/cache/nginx/fastcgi | sort | uniq -c | sort -rn | head
du -sh /var/cache/nginx/fastcgi

Этот способ не трогает сайт: запрос к странице её же и прогрел бы, а чтение файлов — нет.

Не знаете, сколько места занимает ваш кэш и почему?

Пришлите адрес — посчитаю варианты ключей и подскажу потолок.

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

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

Комментарии

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

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