Gestion du cache pour AJAX / PHP
Résolu
Sooron
-
Désespéré, maintenant soulagé ! -
Désespéré, maintenant soulagé ! -
Bonjour,
Je cherche la facon d'indiquer au navigateur qu'il ne doit pas conserver en cache
le resultat d'un appel AJAX d'un script php.
Voici l'exemple du code que j'utilise :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Mon plan de travail</title>
</head>
<script type="text/javascript">
var t
var seconde=0
function initloop()
{
t=setTimeout("ajaxFunction()",1000);
}
function ajaxFunction()
{
var xmlHttp;
seconde=seconde+1;
document.myForm.seconde.value=seconde;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}
xmlHttp.open("GET","time.php",true);
xmlHttp.send(null);
t=setTimeout("ajaxFunction()",1000)
}
</script>
<body onload="initloop()">
<form name="myForm">
Seconde: <input type="text"
name="seconde" />
Time: <input type="text" name="time" />
</form>
</body>
</html>
Et le php :
<?php
echo date('d/m/Y h:i:s') ."\n";
?>
Cela fonctionne tres bien sous Firefix 3 (avec le cache desactive) mais pas sous IE.
Ma question est donc, que faudrait-il ajouter au php pour indiquer au navigateur qu'il ne doit
pas conserver les donnees en cache mais bien effectuer l'appel a nouveau ?
J'ai pense a l'instruction header pour envoyer differents pragmas mais cela ne fonctionne a
priori que pour les pages, et pas pour les appels (ce qui est logique).
Merci pour votre aide.
Je cherche la facon d'indiquer au navigateur qu'il ne doit pas conserver en cache
le resultat d'un appel AJAX d'un script php.
Voici l'exemple du code que j'utilise :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title>Mon plan de travail</title>
</head>
<script type="text/javascript">
var t
var seconde=0
function initloop()
{
t=setTimeout("ajaxFunction()",1000);
}
function ajaxFunction()
{
var xmlHttp;
seconde=seconde+1;
document.myForm.seconde.value=seconde;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
xmlHttp.onreadystatechange=function()
{
if(xmlHttp.readyState==4)
{
document.myForm.time.value=xmlHttp.responseText;
}
}
xmlHttp.open("GET","time.php",true);
xmlHttp.send(null);
t=setTimeout("ajaxFunction()",1000)
}
</script>
<body onload="initloop()">
<form name="myForm">
Seconde: <input type="text"
name="seconde" />
Time: <input type="text" name="time" />
</form>
</body>
</html>
Et le php :
<?php
echo date('d/m/Y h:i:s') ."\n";
?>
Cela fonctionne tres bien sous Firefix 3 (avec le cache desactive) mais pas sous IE.
Ma question est donc, que faudrait-il ajouter au php pour indiquer au navigateur qu'il ne doit
pas conserver les donnees en cache mais bien effectuer l'appel a nouveau ?
J'ai pense a l'instruction header pour envoyer differents pragmas mais cela ne fonctionne a
priori que pour les pages, et pas pour les appels (ce qui est logique).
Merci pour votre aide.
A voir également:
- Gestion du cache pour AJAX / PHP
- Copie caché - Guide
- Numéro caché - Guide
- Jeux google caché - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Logiciel gestion photo gratuit - Guide
3 réponses
Bon, ne vous embêtez pas avec ça, j'ai trouve comment faire :
header("Expires: -1");
Le seul truc que je pige pas trop c'est pourquoi IE rafraichit mon horloge tous les 2 secondes alors que Firefox le fait toutes les secondes ;)
Mais ca me va très bien comme ça.
Merci a ceux qui ont pris le temps de chercher.
header("Expires: -1");
Le seul truc que je pige pas trop c'est pourquoi IE rafraichit mon horloge tous les 2 secondes alors que Firefox le fait toutes les secondes ;)
Mais ca me va très bien comme ça.
Merci a ceux qui ont pris le temps de chercher.
Nous sommes le 21 avril 2011 et il est 22h00.
C'est moi qui te remercie !