Gestion du cache pour AJAX / PHP

Résolu/Fermé
Sooron - 14 juil. 2008 à 11:13
 Désespéré, maintenant soulagé ! - 23 avril 2011 à 04:03
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.
A voir également:

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.
2
Désespéré, maintenant soulagé !
23 avril 2011 à 04:03
Les paroles et les écrits restent.

Nous sommes le 21 avril 2011 et il est 22h00.

C'est moi qui te remercie !
0
Salut,
C'est exactement ce que je cherche
mais on le place ou?
Merci d'avance
0
Sooron Messages postés 1 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 7 septembre 2008
7 sept. 2008 à 09:52
Il faut le placer dans le php, pour reprendre l'exemple ci-dessus il faut écrire :

Dans le php :

<?php
header("Expires: -1");
echo date('d/m/Y h:i:s') ."\n";
?>

Voila j'espère que cela répond a ta question.
0