URL com consulta desativa o cache?

12

Ter uma string de consulta anexada a uma URL faz com que os navegadores nunca a armazenem em cache? Por exemplo, meu site faz algo assim:

/radar-picture.png?v=sep2013

E parece que o FireFox nunca armazena em cache essa imagem; é baixado em cada solicitação.

Eu gostaria que o FireFox o armazenasse em cache pelo tempo que ele quisesse. Eu só quero forçá-lo a baixar quando o v=parâmetro foi alterado.

Senhor Smith
fonte
11
Eu acho que você poderia conseguir isso, se você apenas alterar o nome do arquivo em vez da consulta. Portanto, agora o nome do arquivo seria radar-picture-sep2013.pnge, quando mudar em algum momento no futuro, seria radar-picture-jan2014.png. Você pode configurar a idade máxima do PNG para um ano, a menos que o nome do arquivo seja alterado, o navegador poderá carregar a imagem em cache por um longo tempo.
VSTM

Respostas:

3

A adição de um par de chave / valor de sequência de caracteres de consulta a um recurso estático (como uma imagem, CSS ou JavaScript) pode causar problemas de armazenamento em cache .

Especificamente, desde que você mencionou o Firefox , seu problema pode estar relacionado a uma 'colisão de cache', onde:

As funções de hash do cache de disco do Firefox podem gerar colisões para URLs que diferem apenas um pouco, principalmente nos limites de 8 caracteres. Quando os recursos hash para a mesma chave, apenas um dos recursos é mantido no cache do disco; os recursos restantes com a mesma chave precisam ser buscados novamente nas reinicializações do navegador. Portanto, se você estiver usando impressões digitais ou de outra forma gerando URLs de arquivo de forma programática, para maximizar a taxa de acertos do cache, evite o problema de colisão de hash do Firefox, garantindo que seu aplicativo gere URLs que diferem em limites de mais de 8 caracteres.

[Fonte: https://developers.google.com/speed/docs/best-practices/caching ]

Mike Hudson
fonte
7
O que é "limite de 8 caracteres" e como posso evitar essa colisão? Como devem ser meus URLs?
Andrew
2

Esta resposta no stackoverflow alega que alguns navegadores reagem de maneira diferente ao pressionar Enter na barra de endereços e clicar em um link quando o URL tiver uma string de consulta: https://stackoverflow.com/a/85386/1145388

Quando estiver testando, verifique se você está clicando nos links, em vez de atualizar ou pressionar Enter na barra de URL.

Stephen Ostermiller
fonte
2
Eu acho que a resposta no stackoverflow pode estar desatualizada. Quando eu coloco uma string de consulta nas folhas de estilo style.css?v=sep2013e nos 150KiB background-image:url('bgimage.jpg?v=sep2013');, a navegação no site (por meio de links clicando ou digitando na barra de endereços) fica muito lenta no FireFox.
Mr. Smith