Configure nginx para solicitações max-age = 0

2

Estou usando o nginx como proxy reverso com proxy_cache . O back-end está definindo cache-control cabeçalhos de resposta, o que faz com que o nginx atenda respostas do cache quando possível.

No entanto, gostaria de permitir que os clientes ignorassem o cache definindo um cabeçalho de solicitação Cache-Control:max-age=0 . Dessa forma, os usuários podem obter uma nova cópia acessando CTRL+R no navegador. Por padrão, o nginx parece ignorar o cabeçalho da solicitação Cache-Control .

Como posso configurar o nginx para buscar uma nova cópia do back-end e atualizar o cache sempre que um cliente solicitar um recurso com Cache-Control:max-age=0 ?

    
por Jeroen 27.11.2013 / 19:57

1 resposta

2

Você pode usar proxy_cache_bypass .

proxy_cache_bypass  $http_cache_control;

Isso fará com que o nginx busque uma cópia nova do documento na presença do cabeçalho Cache-Control na solicitação HTTP do cliente.

Observe que a resposta resultante do back-end ainda está qualificada para o armazenamento em cache. Se você quiser desqualificá-lo, use os mesmos argumentos com a diretiva proxy_no_cache também.

Fonte: link

Se você deseja especificamente ignorar o cache somente quando o cliente tiver Cache-Control: max-age=0 nos cabeçalhos (por exemplo, para explicitamente não oferecer suporte a outra variante, Cache-Control: no-cache , que na verdade é uma preferência mais strong por uma nova cópia da página max-age=0 is), então você pode usar o seguinte, que eu não recomendarei devido a tal limitação:

set $cc_ma  0;
if ($http_cache_control = "max-age=0") {    # honour ⌘R, ignore ⇧⌘R (yes, bad idea!)
    set $cc_ma  1;
}
proxy_cache_bypass  $cc_ma;

BTW, também há Pragma: no-cache , o que obviamente não explica, embora no meu conjunto limitado de experimentos, sempre seja acompanhado por um Cache-Control: no-cache , então, o original de uma linha provavelmente faria o melhor trabalho .

Como nota, o SeaMonkey envia Cache-Control: max-age=0 quando você clica em Recarregar ou ⌘R e Pragma: no-cache\r\nCache-Control: no-cache quando você Desloca Recarregar ou ⇧⌘R .

    
por 27.11.2013 / 20:21