Welcome! Log In Create A New Profile

Advanced

Cache TTL = 0

March 30, 2017 10:16AM
Здравствуйте.

Я уже когда-то писал, что некоторые запросы бекенды должны всегда ревалидировать, в спецификации это документировано в трех параметрах заголовка 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 сохраняет ответ в свой кеш и при запросах всегда проводит ревалидацию.

Это потребность из реальных кейсов, спасибо.
Subject Author Posted

Cache TTL = 0

S.A.N March 30, 2017 10:16AM

Re: Cache TTL = 0

S.A.N March 30, 2017 10:40AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 194
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready