[Résolu] Gros problème de cache

Gros problème de cache [Résolu] - PHP - Programmation

Marsh Posté le 14-03-2007 à 18:54:35    

J'ai lu pas mal de sujet concernant la mise en cache, du moins comment l'empêcher mais je n'ai rien trouvé qui puisse corriger un bug qui me tourmente:
 
J'ai un script php qui génère un fichier text (ou xml c'est pareil). Si je rajoute dans ce script l'en-tête:  
 
<?php
header("Expires: Mon, 10 Jul 1990 01:00:00 GMT" );
header("Last-Modified: ".gmdate("D,d M Y H:i:s" )." GMT" );
header("Cache-Control: no-cache, must-revalidate" );
header("Pragma: no-cache" );
header("Content-Type: text/xml" );
?>
 
Seul le script php ne sera pas mis dans le cache mais le fichier xml généré oui. Le problème est que lorsque je met à jour ce fichier impossible de voir les modifications car ce sera toujours celui en cache qui sera chargé  jusqu'à ce que je vide manuellement le cache du browser. Ce problème est beaucoup plus flagrant lorsque "verifier s'il existe une version plus récente des pages enregistrées" est sur "JAMAIS" dans les paramètres internet de IE7. Sous Firefox ça marche un peu mieux...
 
Si quelqu'un à la soluce...  :hello:


Message édité par malicious le 15-03-2007 à 11:32:12
Reply

Marsh Posté le 14-03-2007 à 18:54:35   

Reply

Marsh Posté le 14-03-2007 à 19:24:34    

on peux pas mettre un header de ce genre dans le fichier en question ?
 
sinon c'est pas possible de forcer la mise a jour du cache avec du javascript ?
 
désolé de pas pouvoir te répondre, mais j'essaye d'explorer des pistes peut etre que la solution s'y trouve :)
 
bonne chance

Reply

Marsh Posté le 14-03-2007 à 19:37:34    

Comment fais tu appel à ton fichier XML :
- tu l'affiches directement dans le navigateur ?
- tu l'appel depuis un autre endroit (flash, autre script) ?
 
Si tu as la possibilité, il y'a toujours la solution de générer un nouveau nom de fichier XML à chaque nouvelle génération de ce fichier (avec un timestamp par exemple).

Reply

Marsh Posté le 14-03-2007 à 20:00:52    

Merci pour votre aide. Le fichier XML est chargé par une script en actionscript. Le problème est que la fonction load de ce script charge toujours le même fichier XML qui se trouve dans le cache ce qui entraine des bugs lors de sa mise à jour. D'ailleurs sans passer par cette fonction, lorsque je retape l'url du fichier XML dans le navigateur après avoir fermé/ouvert IE7, et même si ce fichier XML n'existe plus sur le serveur, il continuera à s'ouvrir car il est bel et bien dans le cache:(
J'avais pensé à un nom de fichier aléatoire pour le fichier xml mais comment l'application principale à son démarrage saura le nom du fichier à charger? Il faudrait un autre fichier qui contient le nom du fichier à charger? Mais lui même ira dans le cache et ne chargera alors pas le bon fichier.. C'est un casse-tête mais alors pourquoi toutes les applications du net semble fonctionner sans probleme? Y'a surement un truc simple sinon ce serait un enfer pour faire la moindre chose..

Reply

Marsh Posté le 14-03-2007 à 21:45:15    

Je suis nul en A.S. et le cache sous flash me pose aussi quelques petits problèmes, comme pas mal de choses en A.S. :-)
 
Si je me rappel bien, il y'a moyen de forcer un reload sous flash.
Mais forcer le reload pose aussi un problème au niveau de la bande passante.
Cela dit ce n'est pas forcément le cas ici.
 
La solution serait donc à chercher du coté Flash (forum, newsgroup, ...)
 

Reply

Marsh Posté le 14-03-2007 à 22:04:39    

C'est bon, j'ai trouvé et ça marche  :bounce: :
 
obj_xml.load("data.xml?p="+random(10000)); //Charger data.xml (ou bien utiliser getTimer)
 
Le fait de passer un paramètre bidon mais aléatoire force le reload et ceci même pour un fichier xml et non pas seulement php. Dans le cas d'un fichier php cela rend donc inutile l'utilisation de headers pour blocage du cache.
Le blocage du cache servirai par exemple à la 1er page php qui n'est appelée par aucune autre.


Message édité par malicious le 17-03-2007 à 23:06:38
Reply

Marsh Posté le 20-10-2007 à 13:53:39    

Salut à tous
j'ai exactement le même prob.
une  animation flash appel un xml, ce xml est généré par un code php
seulement IE ne met pas a jour ce xml dans le cache et donc prob...
j'ai essayé le refresh html, le header() php.... le prob est tjr le même...
j'ai essayé cette ligne dans flash :
obj_xml.load("data.xml?p="+random(10000)); //Charger data.xml (ou bien utiliser getTimer)  
et cela me donne  l erreur suivante :
Erreur d'ouverture de l'URL 'file:///C|/mon_chemin/data.xml?p=521'
sur le serveur mon fichier s appelle  data.xml
 
si quelqu’ un à une  idée...  ??
 merci

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed