Ir para conteúdo
Fórum Script Brasil
  • 0

[RESOLVIDO] Problema com cache no IE usando javascript


Leonardo Rauta

Pergunta

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?

Editado por Leonardo Rauta
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...