Php : actualiser image à cause cache ie
Résolu/Fermé
A voir également:
- Cacheie
- Easy php - Télécharger - Divers Web & Internet
- \R php ✓ - Forum PHP
- Php if plusieurs conditions ✓ - Forum PHP
- Echo image php ✓ - Forum PHP
- Br php ✓ - Forum PHP
7 réponses
salut Ben!
merci pour l'astuce!
finalement j'ai trouvé mieux. j'ai remis un post plus tard pour expliquer. c'est ultra simplet et efficace:
voir mon post ici:
http://www.commentcamarche.net/forum/affich-1053645-soluce-Eviter-le-cache-de-l%27explorateur-web
A+
RideZeBigOne
merci pour l'astuce!
finalement j'ai trouvé mieux. j'ai remis un post plus tard pour expliquer. c'est ultra simplet et efficace:
voir mon post ici:
http://www.commentcamarche.net/forum/affich-1053645-soluce-Eviter-le-cache-de-l%27explorateur-web
A+
RideZeBigOne
Je cite "RideZeBigOne" :
" Il suffit d'utiliser la fonction time d'UNIX. Plus besoin des headers META avec le no-cache etc...
en voici qqles exemple:
<img src="http://www.mysite.com/myimage.jpg?<?echo time()?>">
echo ('<img src="../mydir/mypage.php?' .time(). '">' . '<br><br>');
Pour les explications voir ici:
http://forums.devshed.com/showthread.php?s=&threadid=40363&highlight=jpgraph+time
ou encore ici :
http://jpgraph.intellit.nl/viewtopic.php?t=349
J'espère que cela vous servira si vous avez ce genre de pb!! "
Et je lui dit mille fois merci. J'etais passer pour un con lors de ma presentation devant mon boss. Avec cette soluce tout marche nickel...
" Il suffit d'utiliser la fonction time d'UNIX. Plus besoin des headers META avec le no-cache etc...
en voici qqles exemple:
<img src="http://www.mysite.com/myimage.jpg?<?echo time()?>">
echo ('<img src="../mydir/mypage.php?' .time(). '">' . '<br><br>');
Pour les explications voir ici:
http://forums.devshed.com/showthread.php?s=&threadid=40363&highlight=jpgraph+time
ou encore ici :
http://jpgraph.intellit.nl/viewtopic.php?t=349
J'espère que cela vous servira si vous avez ce genre de pb!! "
Et je lui dit mille fois merci. J'etais passer pour un con lors de ma presentation devant mon boss. Avec cette soluce tout marche nickel...
Une petite astuce pour éviter les rechargements inutiles et accélérer l'affichage.
Problème de la solution time():
Ca fait changer le nom du fichier en cache à chaque chargement de la page, donc l'utilisateur va devoir à chaque fois attendre le chargement de toutes les images de la page, même s'il l'a déjà visitée une fois et qu'il n'y a eu aucune mise à jour depuis.
Solution, la fonction filectime() en suffixe:
<IMG src='<? echo $picture."?".filectime($picture); ?>'>
La fonction filectime retourne la date de la dernière création du fichier.
Donc tant que l'image ne change pas, le nom identique à celui en cache dans IE, et l'image s'affichera immédiatement.
Quand l'image est mise à jour, la date de création change, donc le nom comparé au cache est différent, et uniquement cette image sera rechargée!
En espérant que ça vous aidera.
Problème de la solution time():
Ca fait changer le nom du fichier en cache à chaque chargement de la page, donc l'utilisateur va devoir à chaque fois attendre le chargement de toutes les images de la page, même s'il l'a déjà visitée une fois et qu'il n'y a eu aucune mise à jour depuis.
Solution, la fonction filectime() en suffixe:
<IMG src='<? echo $picture."?".filectime($picture); ?>'>
La fonction filectime retourne la date de la dernière création du fichier.
Donc tant que l'image ne change pas, le nom identique à celui en cache dans IE, et l'image s'affichera immédiatement.
Quand l'image est mise à jour, la date de création change, donc le nom comparé au cache est différent, et uniquement cette image sera rechargée!
En espérant que ça vous aidera.
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
2 oct. 2004 à 00:34
2 oct. 2004 à 00:34
Essaies avec ça http://fr2.php.net/header#AEN41309 :-)
Kilian, débutant en tâche de fond.....
salut Killian!
j'allais t'écrire que ca ne marchait pas mais pas tout à fait!!
j'ai d'abord essayer en local (avec apache) mais pas d'amélioration , toujours l'ancienne image qui s'affiche.
juste avant de poster un message j'ai tout de meme essayé en uploadant sur mon hébergeur et la ca marche!!!! (comprend pas pkoi)
www.sport2oufs.Fr.st/stat/index.php (rubrique tracer graphique)
par contre à koi sert les headers 'expires' et 'last-modified' ??? la date du 26 juillet 1997 est bidon je présume pour indiquer que cette est expirée depuis longtps et qu'il faut recharger?
<?php
// Date du passé
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// toujours modifié
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
?>
merci encore!!!
RideZeBigOne
www.sport2oufs.Fr.st
j'allais t'écrire que ca ne marchait pas mais pas tout à fait!!
j'ai d'abord essayer en local (avec apache) mais pas d'amélioration , toujours l'ancienne image qui s'affiche.
juste avant de poster un message j'ai tout de meme essayé en uploadant sur mon hébergeur et la ca marche!!!! (comprend pas pkoi)
www.sport2oufs.Fr.st/stat/index.php (rubrique tracer graphique)
par contre à koi sert les headers 'expires' et 'last-modified' ??? la date du 26 juillet 1997 est bidon je présume pour indiquer que cette est expirée depuis longtps et qu'il faut recharger?
<?php
// Date du passé
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
// toujours modifié
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// HTTP/1.1
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
// HTTP/1.0
header("Pragma: no-cache");
?>
merci encore!!!
RideZeBigOne
www.sport2oufs.Fr.st
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kilian
Messages postés
8731
Date d'inscription
vendredi 19 septembre 2003
Statut
Modérateur
Dernière intervention
20 août 2016
1 527
2 oct. 2004 à 14:40
2 oct. 2004 à 14:40
Apparemment, elle sont reçues en balises meta en html. (Par exemple <meta http-equiv="Expires" ...etc...)
Pour expires:
"Avec la valeur "expires", il est possible de définir une date limite de vos pages et donc d'indiquer au serveur proxy qu'il doit impérativement recharger la page originale à la date indiquée."
Source=>http://www.ac-creteil.fr/util/webmestre/soluhtml/METATAG.HTM
Ici tu trouveras l'utilité de last-modified:
http://membres.lycos.fr/fdinh/atari/webm4.htm
Pour expires:
"Avec la valeur "expires", il est possible de définir une date limite de vos pages et donc d'indiquer au serveur proxy qu'il doit impérativement recharger la page originale à la date indiquée."
Source=>http://www.ac-creteil.fr/util/webmestre/soluhtml/METATAG.HTM
Ici tu trouveras l'utilité de last-modified:
http://membres.lycos.fr/fdinh/atari/webm4.htm
Kilian, débutant en tâche de fond.....
Ah mille merci !!!!!
La meilleure astuce de la décennie !
(je confirme qu'il n'y a pas que IE qui est concerné)
Moi je fais (exemple avec un paramètre):
$time_=time();
... src="image.php?param=$param&$time_"...
Je trouve que c'est plus propre, mais chacun a ses habitudes...
La meilleure astuce de la décennie !
(je confirme qu'il n'y a pas que IE qui est concerné)
Moi je fais (exemple avec un paramètre):
$time_=time();
... src="image.php?param=$param&$time_"...
Je trouve que c'est plus propre, mais chacun a ses habitudes...
Moi j'ai une solution pas top mais qui marche qd même :
Il s'agit d'utiliser la balise <META .. refresh ..> avec redirection vers une url. Cette url sera le même fichier mais avec une variable passée de sorte que la page ne se recharge plus après 1 fois (avec un script php).
Ca donne :
En attendant mieux...
Il s'agit d'utiliser la balise <META .. refresh ..> avec redirection vers une url. Cette url sera le même fichier mais avec une variable passée de sorte que la page ne se recharge plus après 1 fois (avec un script php).
Ca donne :
<? if (empty($refresh)) { echo "<meta http-equiv='refresh' content='0;URL=http://tonsite.com/tonfichier.php?refresh=1'>"; } ?>
En attendant mieux...
17 juil. 2006 à 15:18
merci pour tout autre conseil!!!
9 mai 2007 à 21:40
j'avais exactement le meme probleme, et c'est le seul truc qui marche !!