Resolvendo o problema do Cache

Muitas das vezes quando para web, nossa aplicação não responde da maneira correta, e a priori, não conseguimos identificar o problema.Mas quase sempre o problema é o cache.

Por | @oficinadanet Programação
Quando estamos desenvolvendo para web, principalmente em AJAX, paraece que nossa aplicação parou de funcionar e fica repetindo a mesma resposta para nossas solicitções, mesmo quando essas solicitções passam parâmetros diferentes. Esse problema não ocorre somente em AJAX, aplicações clássicas também sofrem com esse transtorno.

Primeiramente, o que cache?


Para tornar a web mais responsiva e rápida os desenvolvedores implemetaram cache em diversoso níveis, o mais comum deles e o cache em disco, realizado pelo navagdor.Quando um página é requisiatada o navegador procura em seu histórico, para ver se há alguma página com a mesma URL, caso encontre, o navegador não requisita uma nova página, ao invés disso e pega a página do cache e a exibe diretamente, sem que ela seja reprocessada pelo navegador.Bom isto ajuda em MUITO, quando se trata de páginas que custem a serem atualizadas ou possuam muitas imagens.Mas se tratando de páginas dinâmicas, isso pode ser uma dor de cabeça para os desenvolvedores.

Em AJAX, geralmente nossa aplicação tem uma taxa de atualização muito alta, e o cache passa a ser o nosso inimigo número 1, pois nem sempre teremos acesso a todas as atualizações disponíveis. Antes mesmo de se pensar em AJAX, medidas para evitar que aplicaçoes ficassem "presas" no cache foram tomadas.Foram criadas META-TAGS de cabeçalho para informar ao naveagdor ou ao proxy que a página não deveria ser armazenada.

Esta tag informa se a págian pode ou não ser armazenada.Possui quatro valores possíveis:
  - Public : a página pode ser armazenada e é de uso público(todos tem acesso ao cache)
  - Private:a página pode ser armazenada e é de uso privado(somente o usário que requisitou a página pode acessar o cache)
  - No-Cache: A página não é armazenada em Cache
  - No-Store: É feito um cache temporário, a página não é arquivada.

Estas meta-tags pertencem ao somenete ao protocolo HTTP1.1 e não são respeitadas por todos os navegadores(especialmente por aquele azulzinho).
Para obter maior compatibilidade, você pode usar uma outra meta-tag junto com essas.

Além, disso você pode informar com que frequência a sua página é atualizada, assim o cache possui´ra uma data de expiração.

Com esta meta-tag, você pode informar quantos minutos a página levará em média para expirar, sendo que zero siginifica AGORA, ou seja o navegador sempre deve procurar por uma nova versão da página no servidor.Por questões de compatiblidade, algumas pessoas colocam "-1" com valor, também funciona.
Outro valor possível é uma data válida, assim o navegar sebrá a data exata de expiração da página.


Por fim você pode controlar o cache de páginas através de scripts de servidor com ASP ou PHP, ou até mesmo CGI.
Alguns exemplos:

// Data no passado
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

// Sempre modificado
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);

// HTTP/1.0
header("Pragma: no-cache");
?>


  
'HTTP/1.1
Response.CacheControl = "no-cache"
Response.AddHeader "cache-control","no-cache"
'HTTP/1.0
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1 ' minutos até a expiração
Response.Expiresabsolute = Now() ' data de expiração


Até a próxima

Mais sobre:
Share Tweet
Recomendado
Comentários
Destaquesver tudo
  • ASSINE NOSSA NEWSLETTER

    As melhores publicações no
    seu e-mail

  • Preencha para confirmar