Como definir o cache para nunca expirar e minimizar as solicitações no Nginx?

6

Eu tenho um sistema de invalidação de cache no lugar, então eu preciso definir o cache para que o css | js nunca expire.

Eu tentei isso

location ~* \.(js|css)$ { # |png|jpg|jpeg|gif|ico
  expires max;
  #log_not_found off; # what's this for?
}

E isso é o que eu vejo no firebug:

Comovocêpodever,assolicitaçõesaindaestãosendofeitas,emborarecebamapenasumaresposta"não modificada". Mas eu quero evitá-los completamente, isso é possível?

Além disso, eu li que um vencimento de mais de 1 ano é ou será considerado inválido no padrão. Isso é verdade?

Editar

Deixe-me responder @ DisgruntledGoat:

  • Acesso normal ao URL, como clicar em um link ou na barra de URL + inserir: trabalhos em cache, apenas 1 solicitação emitida para esse URL e 0 para os recursos.
  • F5 para recarregar: muitas solicitações emitidas, mas você recebe todas as respostas '304 não modificadas' para os recursos, para que elas não sejam baixadas
  • ctrl + F5 para recarregar sem cache: muitas solicitações, todas com "200 sucesso", todos os recursos são baixados novamente.
por ChocoDeveloper 18.08.2012 / 15:57

2 respostas

5

Você está recarregando a página para testar isso? Quando você faz isso, os navegadores geralmente solicitam todos os arquivos novamente (pelo menos o Chrome). Se você clicar em links para páginas diferentes em seu site, o navegador deve usar o cache e não reenviar arquivos.

Além disso, de acordo com a especificação, a diretiva Expires só pode ter uma data de até um ano no futuro, portanto, 2037 é um valor inválido. Dito isto, os navegadores geralmente aceitam valores muito futuros.

    
por 19.08.2012 / 16:29
2

Isso não pode ser feito de outra maneira. Depende do navegador do cliente como o cache é manipulado. A configuração do cache não deve exceder um ano a mais que a data de modificação Fonte .

O Nginx é muito eficaz se você tiver < 1.000.000 de visitantes todos os dias, você não precisa se preocupar com solicitações enviadas para o Nginx. Se for sobre largura de banda, se um navegador receber uma resposta 304, ele ainda usa os dados de seu cache, portanto, nenhuma largura de banda é derramada.

    
por 18.08.2012 / 17:06