De acordo com as melhores práticas do Yahoo para acelerar o seu site , fornecemos conteúdo estático de uma CDN usando cabeçalhos de expiração de cache futuros. Obviamente, precisamos ocasionalmente atualizar esses arquivos "estáticos"; portanto, atualmente adicionamos uma versão infix como parte do nome do arquivo (com base na soma SHA1 do conteúdo do arquivo). Portanto:
styles.min.css
Torna-se:
styles.min.abcd1234.css
No entanto, gerenciar os arquivos com versão pode se tornar entediante, e eu queria saber se uma notação de argumento GET pode ser mais limpa e melhor:
styles.min.css?v=abcd1234
Qual você usa e por quê? Existem considerações relacionadas a navegador ou proxy / cache que devo considerar?
static-content
cache-control
David Eyk
fonte
fonte
Respostas:
De acordo com o Make the Web Faster , do Google , as páginas com parâmetros de consulta não são armazenadas em cache por muitos proxies HTTP.
Assim
styles.min.abcd1234.css
é a solução preferida. Você pode usar um mecanismo de reescrita de URL apropriado para se tornarstyles.min.abcd1234.css
o mais fácil de implementar de formastyles.min.css?v=abcd1234
transparente.Se você suporta apenas HTTPS, esse conselho não se aplica, porque os proxies normalmente não podem armazenar em cache as páginas que são veiculadas por SSL.
fonte
Usando o controle de versão no estilo GET, a partir de um cache em branco, vários URLs - por exemplo,
style.css?v=123
estyle.css?v=456
- retornariam o mesmo conteúdo. No entanto, não vejo como isso seria problemático, especialmente porque você vincularia apenas um por vez.Acho que você achará o estilo GET muito mais fácil de manter. Você não precisa de arquivos separados: basta alterar o URL e os navegadores buscarão o CSS novamente.
ATUALIZAÇÃO: em pesquisas adicionais, parece que o uso de uma string de consulta pode impedir que os navegadores armazenem em cache os arquivos. No entanto, se você estiver retornando cabeçalhos adequados,
Expires
isso não é um problema.ATUALIZAÇÃO 2: a resposta aceita indica que alguns proxies não armazenam em cache arquivos com uma sequência de consultas. No entanto, isso é baseado em informações antigas; o problema específico que eles mencionam no Squid foi corrigido há 7 anos. Webs impressionantes escreveram bem sobre isso.
fonte
Ambos funcionarão igualmente bem, pois uma string de consulta é considerada parte da URL e, alterando-a, você efetivamente altera o nome do recurso, fazendo com que o navegador obtenha uma nova cópia do arquivo.
Eu digo usar qualquer método que seja mais fácil para você manter.
fonte
isso não é uma resposta para a pergunta acima , quero uma solução melhor, então estou perguntando aqui
Ambos os métodos exigiriam modificação nos arquivos onde os arquivos css e js são referidos. Portanto, seria necessário reiniciar o servidor de aplicativos após fazer as alterações.
Existe uma maneira melhor de lidar com a versão de arquivos estáticos sem precisar reiniciar o servidor de aplicativos?
o seguinte é descartado na solução
a solução também não deve afetar a configuração do controle de cache ou expira.
obrigado
fonte