Existe uma maneira de desativar o cache do navegador do cliente para sites específicos?

10

Esta é uma pergunta independente do navegador, mas estamos testando com o IE9.

Um dos aplicativos da web que nossos usuários visitam está sendo armazenado em cache aleatoriamente e as alterações não são exibidas quando deveriam. Nenhum outro site tem esse problema e trabalhamos com o fornecedor que afirma que isso não está acontecendo com mais ninguém. Se usarmos a barra de ferramentas do desenvolvedor e selecionar "forçar atualização do servidor", tudo será atualizado corretamente.

Em vez de realmente resolver o problema, pensamos em contorná-lo, desativando o cache deste site específico. No entanto, não sabemos como.

GollyJer
fonte

Respostas:

10

A única maneira adequada de desativar o cache do navegador é pelos cabeçalhos HTTP do próprio aplicativo da web. Somente o cabeçalho HTTP 1.1 "Cache-Control" deve ser suficiente para qualquer navegador posterior ao ano 2000. Mas, para proteção extra, o servidor pode emitir os cabeçalhos HTTP 1.1 "Cache-Control" e HTTP 1.0 "Expira" juntos .

Uma maneira hackeada, mas às vezes vista, de lidar com a invalidação de cache é uma string "cachebuster" nos URLs do servidor. O cachebuster geralmente é baseado em carimbo de data e hora e é adicionado como uma string de consulta a cada LINK HTML para tornar o URL exclusivo e usado apenas uma vez. Algo como http://example.org/filename.html?cb=<timestamp+random_value>. Isso é feio e não faz nada que os cabeçalhos HTTP não fazem muito melhor. Mas poderia ser usado como um hack para um público limitado (FX em uma Intranet) ou como uma camada adicional de proteção junto com os cabeçalhos HTTP adequados.

AFAIK, não há como desativar seletivamente o cache de um único site apenas no Internet Explorer. Uma solução (complicada) poderia ser instalar o cache do Varnish como um cache intermediário na sua LAN, configurar o Internet Explorer para usar o Varnish como proxy HTTP e usar a linguagem VCL no Varnish para reescrever os cabeçalhos HTTP apenas para este site específico.

Honestamente, acho que seu fornecedor está cometendo um erro aqui. Sugiro instalar o Fiddler2 for IE ou Firebug for Firefox e examinar os cabeçalhos HTTP reais que o aplicativo da web envia. Correlacione isso com o tutorial de cache de Mark Nottingham, ao qual eu já vinculei acima - acho que os cabeçalhos permitem o cache, ou pelo menos não proíbem expressamente o cache.

Jesper M
fonte
0

Certifique-se de definir os cabeçalhos de vencimento adequados. Se você colocar o tempo no passado, o conteúdo não será armazenado em cache. Verifique a hora / data na estação de trabalho em que o IS9 é executado. Veja também: http://www.mnot.net/cache_docs/

Mircea Vutcovici
fonte
0

Se você não conseguir modificar o conteúdo do site em questão, poderá usar um servidor proxy para modificar o conteúdo do seu navegador. Isso permitiria alterar os cabeçalhos de vencimento.

JeffG
fonte
0

Se o site permitir a conexão via HTTPS, dependendo do seu navegador, você poderá desativar o cache de páginas criptografadas.

No IE, isso pode ser feito assim:

Você pode verificar as configurações do IE em Opções da Internet-> Avançado-> Segurança-> Não salvar páginas criptografadas no disco.

JeffG
fonte
Ele pediu uma solução independente de navegador.
Mircea Vutcovici
1
@ Mircea Esta é uma solução independente de navegador. Eu apenas forneci um exemplo gratuito usando o IE. Muitos outros navegadores têm uma opção para desativar o cache do SSL, mas as configurações estão em lugares diferentes.
JeffG
0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

Você pode considerar o uso de chaves aleatórias na barra de URL. Isso também impedirá o armazenamento em cache no navegador.

Richard
fonte
Isso funcionaria, se a GollyJer tivesse a capacidade de modificar o site. Acho que ele não se baseia em sua pergunta.
JeffG
Apenas para ser preciso, as "chaves aleatórias" não impedem efetivamente o cache. O navegador e os caches intermediários ainda podem armazenar a resposta no disco. Mas da próxima vez que o mesmo arquivo for solicitado, a chave aleatória tornará a URL diferente e, portanto, a versão em cache no disco não será usada. Uma nova representação será baixada do servidor e possivelmente armazenada em cache no disco. Além disso, a tag META PRAGMA é antiga e não deve ser usada - a recomendação é usar os cabeçalhos HTTP Expires e Cache-Control.
Jesper M