Rechercher : dans
Par :

Gestion du cache pour AJAX / PHP

Dernière réponse le 7 sep 2008 à 09:52:52 Sooron, le 14 jui 2008 à 11:13:17 
 Signaler ce message aux modérateurs

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.

Configuration: Windows XP
Firefox 3.0

Meilleures réponses pour « Gestion du cache pour AJAX / PHP » dans :
Ajax - Javascript - Upload multiple VoirIntroduction Création de l'uploader Script côté serveur (upload.php) Téléchargement des Fichiers Multiples Génériques en Ajax Introduction AJAX Upload vous permet de facilement télécharger plusieurs fichiers sans rafraîchir la page et...
La gestion des notes de frais VoirGérer les notes de frais avec des outils électroniques Lorsque les équipes d’une entreprise s’agrandissent, la gestion administrative devient plus complexe. Parmi les dossiers, la gestion des notes de frais. Un casse-tête très chronophage que des...
[PHP] Headers already sent by..... VoirLorsque vous utilisez une fonction PHP qui manipule les en-têtes HTTP comme par exemple: header() setcookie() session_start() Il est important d'utiliser ces fonctions avant d'avoir généré le moindre flux vers le client. A partir du moment où...
Télécharger GLPI VoirGLPI est une application libre, distribuée sous licence GPL destinée à la gestion de parc informatique et de helpdesk. GLPI est composé d'un ensemble de services web écrits en PHP qui permettent de recenser et de gérer l'intégralité des composantes...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

Sooron, le 14 jui 2008 à 12:25:38
  • +1

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.

Répondre à Sooron

2

speed34, le 5 sep 2008 à 13:04:01

Salut,
C'est exactement ce que je cherche
mais on le place ou?
Merci d'avance

Répondre à speed34

3

 Sooron, le 7 sep 2008 à 09:52: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.

Répondre à Sooron
Collection CommentÇaMarche.net