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 :
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Gestionnaire de périphériques VoirCet article a pour but de vous aider à manipuler le gestionnaire des périphériques... :-) Vous pouvez utiliser le Gestionnaire de périphériques pour mettre à jour les pilotes (ou les logiciels) des périphériques matériels, modifier les paramètres...
[Linux] Installer les programmes (gestion des paquets, compil) Voir************************************************************** **** INSTALLER UN PROGRAMME SOUS LINUX : **** * LA GESTION DES PAQUETS ou COMMENT SE SIMPLIFIER LA VIE * ** UN EXEMPLE DE COMPILATION POUR SE FAIRE LA MAIN ...
PHP - Parser du XML VoirIntroduction à XML PHP permet l'analyse syntaxique (parsage ou parsing en anglais) d'un document XML. Le langage XML (eXtensible Markup Language, traduisez Langage à balises extensibles) est un métalangage, c'est-à-dire un langage permettant de...
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...
PHP - Administration d'un annuaire LDAP VoirIntroduction à LDAP PHP permet la connexion et l'envoi de requêtes sur un annuaire LDAP, c'est-à-dire un serveur permettant de stocker des informations de manière hiérarchique. Pour plus d'informations sur les fonctions LDAP de PHP, reportez...

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