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

9

Esta é uma pergunta agnóstica 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 estão aparecendo 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, nosso pensamento é contornar isso desativando o cache para esse site específico. No entanto, não sabemos como.

    
por GollyJer 06.04.2011 / 22:54

5 respostas

9

A única maneira correta de desativar o cache do navegador é pelos cabeçalhos HTTP do próprio aplicativo web. O cabeçalho HTTP 1.1 "Cache-Control" sozinho deve ser suficiente para qualquer navegador pós-ano-2000. Mas, para proteção extra, o servidor pode emitir os cabeçalhos HTTP 1.1 "Cache-Control" e HTTP 1.0 "Expires" juntos .

Uma forma de lidar com a invalidação de cache é uma string "cachebuster" em URLs do servidor. O cachebuster geralmente é baseado no timestamp e é adicionado como uma string de consulta a cada HTML LINK para tornar o URL único 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 façam muito melhor. Mas pode 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 apropriados.

AFAIK não é possível desativar seletivamente o armazenamento em cache de um único site no Internet Explorer. Uma solução (sangrenta e complicada) poderia ser instalar Cache de verniz como um cache intermediário em sua LAN, configurar o Internet Explorer para usar o Varnish como proxy HTTP, e use a linguagem VCL no Varnish para reescrever os cabeçalhos HTTP para este site específico somente.

Honestamente, acho que seu fornecedor está cometendo um erro aqui. Sugiro instalar o Fiddler2 for IE , ou Firebug for Firefox , e veja os cabeçalhos HTTP reais que o webapp envia. Correlacionar isso com o tutorial de cache do Mark Nottingham ao qual eu já me vinculei acima - Acredito que os cabeçalhos permitem o cache, ou pelo menos não proíbe expressamente o armazenamento em cache.

    
por 07.04.2011 / 00:29
0

Certifique-se de definir os cabeçalhos de expiração corretos. Se você colocar o tempo passado, o conteúdo não será armazenado em cache. Verifique a hora / data na estação de trabalho onde o IS9 é executado. Veja também: link

    
por 06.04.2011 / 23:10
0

Se você não puder modificar o conteúdo do site em questão, poderá usar um servidor proxy para modificar o conteúdo da rota para o seu navegador. Isso permitiria que você alterasse os cabeçalhos de expiração.

    
por 06.04.2011 / 23:18
0

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

No IE, isso pode ser feito assim:

You can double check IE's settings in Internet Options->Advanced->Security->Do not save encrypted pages to disk.

    
por 06.04.2011 / 23:23
0
<meta http-equiv="PRAGMA" content="NO-CACHE">

link

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

    
por 06.04.2011 / 23:24