Cache TTL = 0
S.A.N
nginx-forum на forum.nginx.org
Чт Мар 30 14:16:56 UTC 2017
Здравствуйте.
Я уже когда-то писал, что некоторые запросы бекенды должны всегда
ревалидировать, в спецификации это документировано в трех параметрах
заголовка Cache-Control.
max-age=0 - кешировать если есть валидатор (ETag или Last-Modified)
no-cache - не использовать кеш без ревалидации
must-revalidate - нужна ревалидация
Есть тикеты в багтрекере
https://trac.nginx.org/nginx/ticket/1182
Amazon CloudFront, уже это потдерживает в своих патчах Nginx
http://stackoverflow.com/questions/10621099/what-is-a-ttl-0-in-cloudfront-useful-for
Я провел маленькое исследования, многие веб фреймворки используют параметр
no-cache чтобы отключить кеширование, реже для этого используют max-age=0,
но никто не использует для отключения кеширования параметр must-revalidate.
Чтобы не нарушить обратную совместимость со многими фрейворками, безопасней
всего научить Nginx понимать параметр must-revalidate.
Если не указаны no-store, no-cache, max-age=0 но указан must-revalidate и
бекенд отдал валидаторы ETag или Last-Modified, тогда Nginx сохраняет ответ
в свой кеш и при запросах всегда проводит ревалидацию.
Это потребность из реальных кейсов, спасибо.
Posted at Nginx Forum: https://forum.nginx.org/read.php?21,273298,273298#msg-273298
Подробная информация о списке рассылки nginx-ru