Como impedir cache no Internet Explorer

Traduções deste artigo Traduções deste artigo
ID do artigo: 234067 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Este artigo descreve o uso de cabeçalhos HTTP para controlar o cache de páginas da Web no Internet Explorer.

É possível usar o IIS (Microsoft Internet Information Server) para marcar facilmente páginas altamente voláteis ou sensíveis, usando o seguinte script no início das páginas em ASP:
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
				

Mais Informações

Validade e o cabeçalho de vencimento

É altamente recomendado que os servidores Web usem um esquema para a validade de todas as páginas da Web. Não é recomendável que um servidor Web não forneça informações de validade via o cabeçalho de resposta de vencimento HTTP para cada recurso que é retornado para clientes solicitantes. Atualmente, a maioria dos navegadores e proxies intermediários respeitam essas informações de validade e usam para aumentar a eficiência da comunicação na rede.

O cabeçalho de vencimento deve ser sempre usado para especificar o tempo mais razoável quando for necessário para o cliente atualizar um arquivo em particular no servidor. Quando páginas são atualizadas regularmente, o próximo período de atualização é a resposta mais eficiente. Por exemplo, uma página de notícias diárias na Internet atualizada diariamente às 05h00. O servidor Web dessa página de notícias deve retornar um cabeçalho de vencimento com um valor igual a 05h00 no dia seguinte. Quando isso ocorre, o navegador não precisará entrar em contato com o servidor Web novamente até que a página tenha sido efetivamente atualizada.

Páginas que não devem ser alteradas, devem ser marcadas com uma data de validade de aproximadamente um ano.

Em muitos casos, os servidores Web têm uma ou mais páginas voláteis em um servidor que contém informações, que está sujeito a ser alterado imediatamente. Essas páginas devem ser marcadas pelo servidor com um valor igual a "-1" para o cabeçalho de vencimento. Em futuras solicitações do usuário, o Internet Explorer geralmente contata o servidor Web para atualizações na página via uma solicitação do tipo "Se-Modificado-Desde" condicional. Entretanto, a página permanece no cache do disco ("Arquivos de Internet temporários") e é usada nas situações apropriadas sem entrar em contato com o servidor Web remoto, como quando os botões VOLTAR e AVANÇAR são usados para acessar o histórico de navegação ou quando o navegador está em modo offline.

O cabeçalho de controle de cache

Contudo, determinadas páginas são tão voláteis e sensíveis que requerem que o cache de disco não seja usado. Para isso, o Internet Explorer é compatível com o cabeçalho de controle de cache HTTP 1.1, que evita todo o cache de um recurso da Web em particular, quando o valor de não-cache for especificado por um servidor HTTP 1.1.

Como páginas que ficam de fora do cache não podem ser acessadas até que o navegador possa entrar novamente em contato com o servidor Web, os servidores devem usar o cabeçalho de controle de cache com cautela. Na maioria dos casos, é preferido o uso de "Expires: -1".

O cabeçalho Pragma: sem cache

Infelizmente, os servidores herdados HTTP 1.0 não podem usar o cabeçalho de controle de cache. Para fins de compatibilidade reversa com servidores HTTP 1.0, o Internet Explorer é compatível com um uso especial do cabeçalho HTTP Pragma: sem cache. Se o cliente se comunicar com o servidor sobre uma conexão segura (https://) e o servidor retornar um cabeçalho Pragma: sem cache com a resposta, o Internet Explorer não fará cache dessa resposta.

Contudo, atente para o fato de que o cabeçalho Pragma: sem cache não foi projetado para essa finalidade. De acordo com as especificações de HTTP 1.0 e 1.1, esse cabeçalho é definido no contexto de uma solicitação somente, não de uma resposta e, foi projetado para servidores proxy que podem evitar que determinadas solicitações importantes alcancem o servidor Web de destino. Para aplicações futuras, o cabeçalho de controle de cache é o meio mais adequado para controlar cache.

Marcas HTTP-EQUIV META

Páginas em HTML permitem uma forma especial HTTP-EQUIV da marca META que especifica cabeçalhos HTTP em particular de dentro do documento HTML. A seguir, um breve exemplo de página em HTML que usa tanto o cabeçalho Pragma: sem cache quanto o cabeçalho Expires: -1:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
				
Pragma: sem cache evita cache somente quando usado em uma conexão segura. A Pragma: sem cache META é tratada do mesmo modo que o Expires: -1 se usada em uma página que não é segura. A página sofrerá cache, mas será marcada imediatamente como vencida.

As marcas META HTTP-EQUIV do controle de cache são ignoradas e não fazem efeito nas versões 4 ou 5 do Internet Explorer. Para usar o controle de cache, é necessário especificar esse cabeçalho usando cabeçalhos HTTP, conforme descrito na seção de controle de cache acima.

Observe para o fato de que é preferencial o uso de cabeçalhos HTTP padrão em vez das marcas META. Geralmente, é necessário que as marcas META sejam exibidas no topo da seção HTML HEAD. E há pelo menos um problema conhecido com a marca Pragma HTTP-EQUIV META. Para obter mais informações, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
222064 "Pragma: sem cache" não pode evitar que a página sofra cache
Opções do servidor para cache Quando for necessário usar o cabeçalho de controle de cache em páginas que não são em ASP, pode ser necessário usar opções na configuração do servidor para adicionar esse cabeçalho automaticamente. Consulte a documentação do servidor para o processo de inclusão de cabeçalhos HTTP nas respostas de servidor para um diretório em particular. Por exemplo, no IIS 4, execute as seguintes etapas:
  • Invocar o Gerenciador de serviços de Internet.
  • Usando a árvore do computador e de serviços, abra o Servidor Web padrão (ou o servidor Web em questão) e localize o diretório que armazena o conteúdo necessário para o cabeçalho de controle de cache.
  • Abra a caixa de diálogo Propriedades do diretório.
  • Selecione a guia Cabeçalhos HTTP.
  • Clique no botão Adicionar no grupo Cabeçalhos HTTP personalizados e adicione "Cache-Control" ao nome de cabeçalho e "no-cache" ao valor do cabeçalho.
Lembre-se de que não é aconselhável usar esse cabeçalho globalmente em todo um servidor Web. Torne seu uso restrito somente para conteúdo que não deve ir para o cache do cliente sob nenhuma circunstância. Lista de verificação de problemas Se você já aplicou as técnicas deste artigo e ainda enfrenta problemas com cache e o Internet Explorer, consulte a lista de verificação detalhada antes de contatar o Atendimento Microsoft para suporte técnico:
  • Você está usando o cabeçalho de controle de cache com a propriedade ASP "Response.CacheControl" ou através de um cabeçalho HTTP retornado? Essas são únicas maneiras de, efetivamente, evitar o cache no Internet Explorer.
  • Você está usando o Internet Explorer 4.01 Service Pack 2 (SP2) ou superior? Não há como evitar o cache em versões anteriores do navegador.
  • Você verificou duas vezes se o servidor Web está com HTTP 1.1 ativado e se está retornando respostas HTTP 1.1 para o Internet Explorer? Cabeçalhos de controle de cache são inválidos nas respostas HTTP 1.0.
  • Se estiver usando CGI/ISAPI/Servlets no servidor, está seguindo exatamente a especificação HTTP 1.1 principalmente com relação à terminação CRLF dos cabeçalhos HTTP? Para o melhor interesse do desempenho, geralmente o Internet Explorer não é condescendente com respostas que violam a especificação HTTP 1.1. Com freqüência, isso resulta em cabeçalhos ou relatórios ignorados de erros inesperados do servidor.
  • Os cabeçalhos HTTP estão corretamente escritos?

Referências

Para obter mais informações, clique no número abaixo para ler o artigo na Base de Dados de Conhecimento Microsoft (a página pode estar em inglês):
189409 Controle do cache das páginas da Web com IIS 4.0
165150 Como usar o cabeçalho Pragma: Sem cache com IIS e IE
Para obter mais informações sobre HTTP/1.1, visite o seguinte site para obter a RFC 2616 (em inglês):
http://www.w3.org/Protocols/rfc2616/rfc2616.html

Propriedades

ID do artigo: 234067 - Última revisão: quinta-feira, 22 de março de 2007 - Revisão: 4.2
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 4.0 Edição de 128 Bits
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
  • Microsoft Internet Explorer 6.0
  • Microsoft Internet Explorer 6.0 Service Pack 1
Palavras-chave: 
kbhowto kbcaching kbfaq KB234067

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com