Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

eduardofelden

Não manter dados em cache

Recommended Posts

Pessoal!

 

To com a seguinte dúvida, já fiz de tudo, procurei em tudo que lugar pra que os dados carregados via AJAX não fiquem em cache no IE. No firefox aparecer novamente a mensagem carregando... e atualiza as informações numa boa. Mas no IE isso não ocorre. Alguém tem uma dica, dêem uma olhada no meu codigo pra puxar os dados via AJAX.

var req;//Processa recados por grupofunction ProcessaRecadosPorGrupo(url, n){	req = null;	//Procura por um objeto nativo (Mozilla/Safari)	if(window.XMLHttpRequest){		req = new XMLHttpRequest();		req.onreadystatechange = ProcessaRecados;		req.open("GET", url+"?codgrupo="+n, true);		req.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");		req.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");		req.setRequestHeader("Pragma", "no-cache");		req.send(null);	//Procura por uma versao ActiveX (IE)	}else if(window.ActiveXObject){		req = new ActiveXObject("Microsoft.XMLHTTP");		if(req){			req.onreadystatechange = ProcessaRecados;			req.open("GET", url+"?codgrupo="+n, true);			req.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");			req.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");			req.setRequestHeader("Pragma", "no-cache");			req.send();		}	}}function ProcessaRecados(){	document.getElementById('resultado').innerHTML = "<div style=\"font-family: Arial; font-size: 11px; padding: 5px 5px 5px 5px;\"><img src=\"http://www.4gproducoes.com.br/imagens/carregando.gif\" width=\"16\" height=\"16\" align=\"absmiddle\"> carregando dados...</div>";	if(req.readyState == 4){		//apenas se o servidor retornar ok		if(req.status == 200){			document.getElementById('resultado').innerHTML = req.responseText;		}else{			alert("Ocorreu um erro durante o processamento das informações.");		}	}}function getRecados(n){	ProcessaRecadosPorGrupo("get.recados.php", n);}
Ele funciona direito, também fiz com que no arquivo get.recados.php não armazene os dados em cache, mas não ta funcionando no IE direito.

 

Agradeço a atenção de vocÊs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema solucionado...

 

Utilizei isso e funcionou blza

header("Content-type: text/html; charset=iso-8859-1");	header("Expires: $gmtDate GMT");	header("Last-Modified: $gmtDate GMT");	header("Cache-Control: no-cache, must-revalidate");	header("Pragma: no-chache");

Compartilhar este post


Link para o post
Compartilhar em outros sites

No firefox reatualiza porq a função ajax dele é diferente

Essa funções naum funcionam ainda to tentando descobrir o erro delas

req.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");

req.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");

req.setRequestHeader("Pragma", "no-cache");

 

va nesse tópico

link

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra resolver problema de cache no ajax com o IE, você também pode tentar o truque de deixar parâmetros randômicos na URL.

Eu fiz uma função que gera isto automático e implementei aqui na minha função fácil pra ajax.

 

A função que impede problema de cache no IE através de parametros randômicos na URL é esta:

function antiCacheRand(aurl){		var dt = new Date();		if(aurl.indexOf("?")>=0){// já tem parametros			return aurl + "&" + encodeURI(Math.random() + "_" + dt.getTime());		}else{ return aurl + "?" + encodeURI(Math.random() + "_" + dt.getTime());}	}
pra usar é só passar a url que você quer inserir o randomico como parametro.

Exemplo:

url = antiCacheRand(url)		ajax1.open("GET", url ,true);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.