Jump to content
Fórum Script Brasil
  • 0

[RESOLVIDO] Problema com cache no IE usando javascript


Leonardo Rauta

Question

Estou com um problema de cache na minha aplicação.

Minha aplicação é constituída por um html (index.html), o qual chama vários arquivos javascript para desenhar as janelas e fazer toda a parte lógica das janelas.

Ao iniciar a aplicação a janela faz uma requisição para um servidor fastCGI para verificar quais as opções de acesso que o usuário possui. Depois que o usuário selecionar determinada ação, a página envia outra requisição ao servidor e é recarregada para apresentar os novos menu ao usuário, no Firefox isso funciona corretamente. Porém, no IE a resposta do servidor é sempre a mesma (apenas para o IE), mas se eu limpar o cache a resposta é alterada.

Não é problema no servidor pois em outros navegadores funciona corretamente. Tudo leva a entender que o problema seja no armazenamento de cache feito pelo IE, inclusive por depois de limpar o cache, funcionar corretamente.

Existe algum modo de limpar o cache do IE? Utilizando alguma função javascript?

Já tentei utilizar as meta tags:

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="-1">
<META HTTP-EQUIV="Cache-control" CONTENT="no-store">

Já tentei enviar sempre uma requisição ao servidor com um número aleatório ou com a data, para evitar o cache mas não foi bem sucedido, já fiz o servidor responder sempre a data, mas a data recebida pelo IE não era alterada. Outra opção que eu tinha era carregar as páginas com um parâmetro aleatório, também para evitar a página entrar em cache. Porém, todas as tentativas sem sucesso.

Alguém já passou por esse problema, sabe como resolver ou tem mais idéias para limpar o cache utilizando o javascript?

Edited by Leonardo Rauta
Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Depois de muita procura encontrei uma solução.

Para quem tiver com um problema similar, encontrei o meu problema.

O problema estava nas requisições do tipo "GET", elas ficavam armazenadas em cache pelo IE. Para resolver isso foi utilizado as seguintes linhas de código:

var request = new XMLHttpRequest();
request.open("GET",pagina, false);
request.send(null);
if(!request.getResponseHeader("Date")) {
   var cached = request;
   request = new XMLHttpRequest();
   var ifModifiedSince =
     cached.getResponseHeader("Last-Modified") ||
     new Date(0); // January 1, 1970
   request.open("GET",pagina, false);
   request.setRequestHeader("If-Modified-Since", ifModifiedSince);
   request.send("");
   if(request.status == 304) {
     request = cached;
   }
}

Utilizando isso eu consegui limpar o cache a cada requisição feita ao servidor.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...