Cache revalidation using If-None-Match

S.A.N nginx-forum at nginx.us
Fri Jul 18 17:01:11 UTC 2014


> Всеравно nginx отдаст 304 ответ из своего кеша еще быстрее,
> чем веб-приложение на которое он проксирует запросы клиентов.

Да, конечно.
Но вы не сможете постоянно хранить ответы в кеше, их придется когда-то
ревалидировать.

Я долгое время не понимал, необходимости в ревалидации, считал это лишним,
проще через время отдать новый контент.
Для проектов у которых есть высокая доля повторных запросов - ревалидация не
очень нужна.

Там все просто, условно говоря, есть 100 000 запросов в час, они все
приходят на 100 разных uri.
В результате мы получаем за короткое время много запросов на одни и те же
uri.
Это отличный сценарий чтобы просто включить кеширования, например на
mag-age=60, и включить блокировку на обновления.
Тогда можно не ревалидировать кеш, на бекенд будет приходить мало запросов
(средний RPS не высокий).

Но, есть и другие проекты, в которых совсем другая картина, там все на
оборот, мало повторных запросов и очень много уникал запросов.
Если включить кеш даже на mag-age=3600, кеш просто не будет доживать до
следующего запроса.

Это не значит что посещаемость сайта низкая, просто большинство запросов
приходят на уникал uri.
Например каталог товаров магазина, все люди ходят по разным товарам, на сайт
заходят из поисковиков или других сайтов по ссылке на конкретный товар.

Условно говоря, 100 000 запросов в час, приходят на 90 000 уникал uri, такая
картина постоянно.
Всего в магазине 1000 000 уникал uri, не сложно подсчитать, что повторные
запросы будут, но где-то раз в сутки и позже.

В таком случаи, есть два варианта поставить mag-age=10000+, или включить
ревалидацию.
Первый вариант подходит только для архивных данных.
Для магазина больше подходит вариант с ревалидацией.

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

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,251189,251922#msg-251922



Подробная информация о списке рассылки nginx-ru