Probleme de mise à jour, cache navigateur

Probleme de mise à jour, cache navigateur - PHP - Programmation

Marsh Posté le 14-04-2006 à 02:03:40    

bonjour,  
 
voilou, j'ai un petit souci.
Sur ma page d'aministration, je peux uploader des images mais il y a un probleme de cache. Je vous explique.
 
Je vous explique.  
 
Sur ma page ajout.php, je selectionne mon image.  
Une fois fois que j'ai selectionné mon image, cela déclenche mon evenement javascript onChange qui envoie l'image au fichier ajout_traitement.php.  
Dans le fichier ajout_traitement.php, je copie mon uploader vers /images/tmp/image1.jpeg (avec le nom image2.jpeg dans un repertoire temporaire) et je me reredirige avec un header vers ajout.php.  
La photo ajouté apparait ainsi sur la ajout.php.
 
http://fuma001.free.fr/snag/up.jpeg
 
Donc je recapitule :
ajout.php => ajout_traitement.php => ajout.php
 
 
Je termine de completer mon formulaire et tout en bas, de mon formulaire je clique sur le bouton "Nouvel Enregistrement".  Cela m'envoie de nouveau vers ajout_traitement, mais ce coup ci, je copie toutes mes données dans une base de donnée et je copie toutes mes images (pace que comme vous avez pu le voire sur le screen, je peux envoyer jusqu'a 4 images)
/images/tmp/image1.jpeg
/images/tmp/image2.jpeg
/images/tmp/image3.jpeg
/images/tmp/image4.jpeg
vers un autre repertoire ......
 
 
Le problème, c'est que lorsque je fais tout de suite apres la meme manip pour rajouter un autre enregistrement :  
- je selectionne mon image
- mon image est envoyé vers ajout_traitement.php et est copié vers /images/tmp/image1.jpeg puis je suis redirigé vers ajout.php
- mon image apparrait.  
 
Mais le souci c'est que l'image qui apparait dans ajout.php, c'est l'ancienne image. Lorsque je fais F5 sous Firefox, la nouvelle image apparait.  
 
Le souci, c'est que c'est une image temporaire qui porte un nom identique à chaque fois, et donc firefox la garde dans son cache à chaque fois.
 
 
Avant la reredirection vers ajout.php, j'ai essayé :

header("Cache-Control: no-cache, must-revalidate" ); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );


mais cela n'a pas l'air de fonctionner :(


Message édité par weed le 14-04-2006 à 09:07:56
Reply

Marsh Posté le 14-04-2006 à 02:03:40   

Reply

Marsh Posté le 14-04-2006 à 07:39:22    

au cas tu peux contourner le probleme en générant une partie du nom de l'image de manière aléatoire

Reply

Marsh Posté le 14-04-2006 à 09:11:27    

arf cela me complique la vie le nom aléatoire .....
 
sinon, j'avais pensé faire un update de la page, l'équivalent de F5 lorsque je suis rereredirigé vers ajout.php avec du javascript ...
 
C'est pas tres propre, mais bon, s'il n'y a pas d'autre choix ....

Reply

Marsh Posté le 14-04-2006 à 11:15:56    

personne a d'idée ?
je me suis planté dans mon header ?

Reply

Marsh Posté le 14-04-2006 à 14:19:48    

Le problème viens pas de ajout.php, ça vient de l'image qui a la meme url.
Change le nom de l'image ou rajoute un parametre bidon genre 'image_tmp.jpg?time=' . time() ;
Ca devrait suffire.


Message édité par Ricco le 14-04-2006 à 14:20:08

---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 14-04-2006 à 15:11:02    

ca marche nickel, merci mais j'aimerais connaitre la raison  
 
le probleme vient en effet de l'image qui porte la meme url. on est d'accord la dessus.  
 
Mais est ce que ce n'est pas parce que Firefox a mis en cache la l'image ?
lorsque l'on consulte la meme page, pour accelerer l'affichage, Firefox mets en cache les images.
 
Ce que je pensais faire, c'est au moment de reredirigé vers ajout.php, de passer des informations dans l'entete http par un header, dire  à Firefox que cette page est expiré et que tu dois la recharger.

Reply

Marsh Posté le 14-04-2006 à 19:32:23    

weed a écrit :

ca marche nickel, merci mais j'aimerais connaitre la raison  
 
le probleme vient en effet de l'image qui porte la meme url. on est d'accord la dessus.  
 
Mais est ce que ce n'est pas parce que Firefox a mis en cache la l'image ?
lorsque l'on consulte la meme page, pour accelerer l'affichage, Firefox mets en cache les images.
 
Ce que je pensais faire, c'est au moment de reredirigé vers ajout.php, de passer des informations dans l'entete http par un header, dire  à Firefox que cette page est expiré et que tu dois la recharger.


 
oui cela vient du cache.
 
ajoute :

Code :
  1. header("Pragma: nocache" ); avant header("Cache-Control: no-cache, must-revalidate" ); // HTTP/1.1


 
mais tu ne feras toujours qu'envoyer des entetes que le navigateur interprete comme il veut...


Message édité par misterpinguin le 14-04-2006 à 19:32:37
Reply

Marsh Posté le 14-04-2006 à 23:34:57    

c'est a dire comment ?
si je demande au navigateur que cette page ne doit pas utiliser de cache, il ne va pas l'utiliser.
 
c'est vrai que comme c'est le client, on n'est pas sur à 100% que l'internaute n'a pas trifouiller son navigateur pour prendre en compte le parametre nocache de l'entete http

Reply

Marsh Posté le 15-04-2006 à 00:00:23    

Enfin, pê que les info contenu dans le header du .php concerne uniquement la page en elle même, et pas les images ou les autre pages php qu'elle peut pointer.
Il faudrait pê changer les headers des images en elle-même pour avoir ce comportement.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 15-04-2006 à 01:43:02    

> Il faudrait pê changer les headers des images en elle-même pour avoir ce comportement.
- c'est même sûr!

Reply

Sujets relatifs:

Leave a Replay

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