Como impedir a colocação em cache no Internet Explorer

Traduções de Artigos Traduções de Artigos
Artigo: 234067 - Ver produtos para os quais este artigo se aplica.
Este artigo foi publicado anteriormente em PT234067
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo poderá conter hiperligações para conteúdo em inglês (ainda não traduzido). As opções mencionadas neste artigo poderão estar em inglês, consoante a versão do sistema operativo ou dos componentes instalados.

Este artigo descreve a utilização de cabeçalhos de HTTP para controlar a colocação de páginas Web em cache no Internet Explorer.

É possível utilizar o Microsoft Internet Information Server (IIS) para marcar facilmente páginas voláteis ou sensíveis utilizando o seguinte script na parte inicial das páginas específicas ASP (Active Server Pages):
<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
				

Mais Informação

Expiração e o cabeçalho Expires

É recomendável que todos os servidores da Web utilizem um esquema para a expiração de todas as páginas Web. Não é aconselhável que um servidor da Web não forneça informações sobre expiração através do cabeçalho de resposta HTTP Expires para cada recurso devolvido aos clientes que efectuam os pedidos. Actualmente, a maior parte dos browsers e proxies intermédios respeitam estas informações sobre expiração e utilizam-nas para aumentar a eficácia das comunicações na rede.

O cabeçalho Expires deve ser sempre utilizado para especificar o momento mais adequado em que um ficheiro específico no servidor necessita de ser actualizado pelo cliente. Quando as páginas são actualizadas regularmente, o período seguinte para a actualização é a resposta mais eficaz. Por exemplo, uma página de notícias diárias na Internet é actualizada todos os dias às 5 horas. O servidor da Web desta página de notícias deve devolver um cabeçalho Expires com um valor de 5 horas no dia seguinte. Quando tal acontece, o browser só necessita de contactar o servidor da Web novamente quando a página for realmente alterada.

As páginas que não deverão sofrer alterações devem ser marcadas com uma data de expiração de aproximadamente 1 ano.

Em muitos casos, os servidores da Web têm uma ou mais páginas voláteis num servidor que contêm informações sujeitas a alterações imediatas. Estas páginas devem ser marcadas pelo servidor com um valor de "-1" para o cabeçalho Expires. Nos pedidos futuros do utilizador, o Internet Explorer normalmente contacta o servidor da Web para obter actualizações dessa página através de um pedido condicional If-Modified-Since. No entanto, a página permanece na cache de disco ("Temporary Internet Files") e é utilizada em situações apropriadas sem contactar o servidor da Web remoto, como na utilização dos botões Retroceder e Avançar para aceder ao histórico de navegação ou quando o browser está em modo offline.

O cabeçalho Cache-Control

No entanto, algumas páginas são tão voláteis ou sensíveis que não necessitam de colocação em cache no disco. Para este fim, o Internet Explorer suporta o cabeçalho HTTP 1.1 Cache-Control, que impede qualquer tipo de colocação em cache de um recurso da Web específico quando o valor no-cache é especificado por um servidor de HTTP 1.1.

Uma vez que as páginas que não são colocadas em cache só são acessíveis quando o browser consegue contactar o servidor da Web novamente, os servidores devem utilizar com moderação o cabeçalho Cache-Control. Na maioria dos casos, é preferível utilizar "Expires: -1".

O cabeçalho Pragma: No-Cache

Infelizmente, os servidores de HTTP 1.0 legados não podem utilizar o cabeçalho Cache-Control. Por motivos de compatibilidade com versões anteriores dos servidores de HTTP 1.0, o Internet Explorer suporta uma utilização especial do cabeçalho HTTP Pragma: no-cache. Se o cliente comunicar com o servidor através de uma ligação segura (https://) e o servidor devolver um cabeçalho Pragma: no-cache com a resposta, o Internet Explorer não coloca a resposta em cache.

No entanto, repare que o cabeçalho Pragma: no-cache não se destinava a isto. De acordo com as especificações de HTTP 1.0 e 1.1, este cabeçalho é definido apenas no contexto de um único pedido, e não de uma resposta, e na realidade destina-se a servidores proxy que podem impedir que certos pedidos importantes contactem o servidor da Web de destino. Para aplicações futuras, o cabeçalho Cache-Control será o método correcto para o controlo da colocação em cache.

Tags META HTTP-EQUIV

As páginas HTML permitem um formato HTTP-EQUIV especial da tag META que especifica cabeçalhos de HTTP específicos a partir do documento HTML. Segue-se uma pequena página HTML de exemplo que utiliza os cabeçalhos Pragma: no-cache e Expires: -1:
<HTML><HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
</HEAD><BODY>
</BODY>
</HTML>
				
Pragma: no-cache apenas impede a colocação em cache quando utilizada numa ligação segura. Uma tag META Pragma: no-cache é tratada da mesma forma que Expires: -1 se for utilizada numa página não segura. A página será colocada em cache mas é marcada como expirada imediatamente.

As tags META HTTP-EQUIV Cache-Control são ignoradas e não têm efeito no Internet Explorer, versões 4 ou 5. Para utilizar o cabeçalho Cache-Control, este cabeçalho deve ser especificado através de cabeçalhos de HTTP tal como descrito na secção anterior sobre o cabeçalho Cache-Control.

Repare que é preferível utilizar cabeçalhos de HTTP padrão em vez de tags META. Normalmente, as tags META devem aparecer no início da secção HTML HEAD. Para além disso, existe pelo menos um problema conhecido com a tag META HTTP-EQUIV Pragma. Para obter mais informações, clique no número de artigo que se segue para visualizar o artigo na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
222064 "Pragma: No-cache" tag may not prevent page from being cached
Opções do servidor para colocação em cache Quando for necessário utilizar o cabeçalho Cache-Control em páginas não ASP, poderá ser necessário utilizar opções na configuração do servidor para adicionar este cabeçalho automaticamente. Consulte a documentação do servidor sobre o processo que consiste em adicionar cabeçalhos de HTTP às respostas do servidor para um directório específico. Por exemplo, no IIS 4, siga estes passos:
  • Invoque o gestor de serviços para a Internet.
  • Através da árvore de serviços e computador, abra o servidor da Web predefinido (ou o servidor da Web indicado) e localize o directório com o conteúdo que necessita do cabeçalho Cache-Control.
  • Abra a caixa de diálogo Propriedades para esse directório.
  • Escolha separador Cabeçalhos de HTTP.
  • Clique no botão Adicionar no grupo Cabeçalhos de HTTP personalizados e adicione "Cache-Control" para o nome do cabeçalho e "no-cache" para o valor do cabeçalho.
Não é recomendável utilizar este cabeçalho globalmente em todo o servidor da Web. Limite a utilização deste cabeçalho apenas a conteúdo que não possa ser de maneira nenhuma colocado em cache no cliente. Lista de verificação de problemas Se tiver aplicado as técnicas neste artigo e se ainda tiver problemas na colocação em cache e no Internet Explorer, examine esta lista de verificação passo a passo antes de contactar a Microsoft para obter suporte técnico:
  • Está a utilizar o cabeçalho Cache-Control com a propriedade ASP "Response.CacheControl" ou através de um cabeçalho de HTTP devolvido? Esta é a única forma de impedir realmente a colocação em cache no Internet Explorer.
  • Está a utilizar o Internet Explorer 4.01 Service Pack 2 ou superior? Não é possível impedir completamente a colocação em cache em versões anteriores do browser.
  • Já verificou novamente se o servidor da Web tem HTTP 1.1 activado e se devolve respostas de HTTP 1.1 ao Internet Explorer? Os cabeçalhos Cache-Control são inválidos em respostas de HTTP 1.0.
  • Caso esteja a utilizar mini-aplicações para servidor/CGI/ISAPI do lado do servidor, está a seguir exactamente a especificação de HTTP 1.1, especialmente no que diz respeito à terminação com CRLF dos cabeçalhos de HTTP? Normalmente, para salvaguardar o desempenho, o Internet Explorer não deixa passar despercebidas as respostas que violam a especificação HTTP 1.1. Normalmente, esta situação resulta em cabeçalhos ignorados ou relatórios de erros inesperados de servidor.
  • Os cabeçalhos de HTTP estão escritos correctamente?

Referências

Para obter mais informações, clique nos números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft (KB, Microsoft Knowledge Base):
189409 Controlling the caching of Web pages with IIS 4.0
165150 How to use Pragma: No-cache with IIS and IE
Para mais informações sobre HTTP/1.1, visite o seguinte Web site para obter o RFC 2616:
http://www.w3.org/Protocols/rfc2616/rfc2616.html

Propriedades

Artigo: 234067 - Última revisão: 4 de outubro de 2006 - Revisão: 4.1
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • 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