Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
735 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Gros problème de cache

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu] Gros problème de cache

n°1528603
malicious
Posté le 14-03-2007 à 18:54:35  profilanswer
 

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
mood
Publicité
Posté le 14-03-2007 à 18:54:35  profilanswer
 

n°1528611
naeh
Posté le 14-03-2007 à 19:24:34  profilanswer
 

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

n°1528616
Protohd
Posté le 14-03-2007 à 19:37:34  profilanswer
 

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).

n°1528625
malicious
Posté le 14-03-2007 à 20:00:52  profilanswer
 

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..

n°1528656
Protohd
Posté le 14-03-2007 à 21:45:15  profilanswer
 

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, ...)
 

n°1528664
malicious
Posté le 14-03-2007 à 22:04:39  profilanswer
 

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
n°1627976
ran231
Posté le 20-10-2007 à 13:53:39  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [Résolu] Gros problème de cache

 

Sujets relatifs
[résolu] Variables dynamiques dans des classes[javascript][résolu] charger une nouvelle page avec window.onload
Probleme positionnement de menu a ongletsProblème pour tester reload
VBA access execution de macro [résolu][MFC - C++] Probleme exécution instruction
Problème d'inclusion de bibliothèque[Résolu] [Divers] crash d'un programme (Newsleecher)
Problème de barre de progression[PHP]Problème fonction
Plus de sujets relatifs à : [Résolu] Gros problème de cache


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR