Meu navegador continua mostrando a página em cache, apesar de enviar no-cache, no-store, must-revalidate do servidor no cabeçalho de resposta

Meu navegador continua mostrando a página em cache, apesar de enviar no-cache, no-store, must-revalidate do servidor no cabeçalho de resposta

O conteúdo de nossas páginas está sempre mudando e, portanto, não queremos que o navegador armazene a página em cache ou mostre a página em cache ou nossos usuários. Mas o navegador continua mostrando a página em cache, apesar de enviar no-cache, no-store, must-revalidate do servidor no cabeçalho de resposta. Isso é realmente frustrante. Temos milhares de usuários e todos estão lendo notícias antigas!!!

Estamos usando o modelo js do lado do cliente (handlebars js) para ler dados de um servidor e renderizar a página, mas o navegador continua mostrando a última página renderizada aos usuários e o handlebars não está lendo novos dados do servidor nem atualizando o conteúdo. O que pode estar errado??

Se eu pressionar shift reload, o navegador exibirá novo conteúdo, mas não posso pedir ou esperar que meus usuários façam isso sempre que carregarem nossa página.

Alguém pode dar dicas úteis?

200 OK

Cabeçalho de resposta:

Accept-Ranges: bytes
Cache-Control: no-cache, no-store, must-revalidate
Connection: keep-alive
Content-Length: 12229
Content-Type: text/html
Date: Fri, 14 Aug 2020 09:08:10 GMT
ETag: "1e9602c3ddcf81c338fa4194c61ea035"
Last-Modified: Fri, 07 Aug 2020 12:38:22 GMT
Server: nginx/1.19.1
Strict-Transport-Security: max-age=0; includeSubDomains
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
x-amz-request-id: tx00000000000004b9d2b06-005f36547a-ab8956-ams3b
x-rgw-object-type: Normal

Cabeçalhos de solicitação:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
Cookie: _ga=GA1.1.709310680.1596978913; _gid=GA1.1.2045080055.1596978913
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36
(index):48 [Violation] Avoid using document.write(). https://developers.google.com/web/updates/2016/08/removing-document-write

​ Estamos fazendo um http GET pois haverá um cloudflare na frente do nginx que fará o encerramento do tls e fazendo o http get normal para o nosso nginx. Tenho medo de pensar que outros problemas de cache o cache do cloudflare apresentará quando entrarmos no ar no cloudflare. Precisamos entrar no ar em alguns dias e resolver isso antes de entrarmos em produção com esta versão. Apreciaremos ajuda rápida nesse sentido para resolver o problema acima. Desde já, obrigado.

Responder1

Você usouDiretivas de controle de cacheque entram em conflito entre si, portanto o navegador deve tomar uma decisão sobre quais diretivas obedecer e quais ignorar.

Especificamente você usou:

  • no-cache. Na verdade, isso permite que a resposta seja armazenada em cache, embora seja imediatamente marcada como obsoleta e sempre revalidada com o servidor de origem.
  • must-revalidate: significa apenas que um documento obsoleto em cache deve ser revalidado com o servidor de origem. Implícito em no-cacheso não tem efeito adicional aqui.
  • no-store: não armazene em cache a resposta.

O que um navegador faz quando você diz para não armazená-lo em cache e também pode armazená-lo em cache?

Se você não quiser que a resposta seja armazenada em cache, useapenas no-store. Não use as outras duas diretivas Cache-Control.

informação relacionada