Rechercher : dans
Par :

Php : actualiser image à cause cache ie

Dernière réponse le 9 jui 2009 à 10:20:45 RideZeBigOne, le 1 oct 2004 à 22:36:24 
 Signaler ce message aux modérateurs

Bonjour!

Sur mon site je génére des graphiques au format Jpeg (avec JPgraph pour ceux qui connaissent). j'affiche le résultat sur une page php/html jusque la tout va bien.

le souci vient d'IE qui ne recharge pas l'image si je la regénère entre temps sachant qu'elle garde le meme nom.(à cause du cache qui est souvent activé par défaut par les internautes). sur mon pc j'ai désactivé le cache et ca marche mais je ne peux pas le faire pour les internautes qui passent sur mon site.

j'ai pensé faire un refresh de ma page avec la balise META 'refresh' mais le faire de le faire périodiquement ne convient pas.

j'ai aussi mis des balises META 'no-cache' sans que cela fasse d'effet.

j'ai pensé faire un nom d'image évolutif (incrément) mais ca me complique le code pour pas grd chose... et je n'ai pas réussi à la faire :'(

je me tourne vers vous pour savoir si vous avez une astuce pour faire un refresh (une fois seulement de la page à son chargement) ou encore prendre le problème à sa source en forcant ie à recharger cette image lors du chargement de la page.

voici le bout de code (l'image est à la fin du code graph.jpeg):

<?php
include("infos/config.inc.php"); // on inclu le fichier de config
include("infos/fonctions.php"); // in inclu les fonctions
include("infos/style.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>
<title><? $titre = stripslashes($titre); echo "$titre"; ?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<Meta http-equiv="Pragma" content="no-cache">
</head>

<?php
echo "<body bgcolor=\"$backg\"";
if($imgbackg != ''){ echo "background=\"$imgbackg\""; }
echo ">";
?>

<div align="center">
<table width="97%" border=0 cellspacing=0 cellpadding=0>
<tr>

<td width="500">
<div align="center" style="color:<? echo "$txt"; ?>"></div>
</td>
</tr>
</table>
<br><br>
<img src="<? echo "$urlscript"; ?>/img/<? echo "$puce.gif"; ?>" border=0 alt="">
<a href="<? echo "$urlscript/"; ?>" class="liens">Liste des Sessions</a>
<img src="<? echo "$urlscript"; ?>/img/<? echo "$puce.gif";?>" border=0 alt="">
<a href="<? echo "$urlscript/?pg=ecrire"; ?>" class="liens">Ajouter une session</a>
<img src="<? echo "$urlscript"; ?>/img/<? echo "$puce.gif";?>" border=0 alt="">
<a href="<? echo "$urlscript/?pg=requete"; ?>" class="liens">Tracer Graphiques</a>
<img src="<? echo "$urlscript"; ?>/img/<? echo "$puce.gif";?>" border=0 alt="">
<a href="mailto:<? echo "$emailadmin"; ?>" class="liens">Contact</a>
<img src="<? echo "$urlscript"; ?>/img/<? echo "$puce.gif";?>" border=0 alt="">
<a href="<? $urlsiteweb = stripslashes($urlsiteweb); echo "$urlsiteweb"; ?>" class="liens">Retour au site</a> <br>
<br>

<img src="graph.jpeg" alt="graphique demandé www.sport2oufs.fr.st">

</div>
</body>
</html>


merci d'avance!!!
RideZeBigOne
http://www.sport2oufs.fr.st/stat/requete.php

Meilleures réponses pour « Php : actualiser image à cause cache ie » dans :
[Internet] Le cache d'Internet Explorer VoirLorsque vous naviguez sur le WEB, votre navigateur met les pages Web dans un cache, c'est-à-dire qu'il enregistre les pages, images et autres fichiers sur votre PC. Grâce à ce cache, votre navigateur n'aura plus à télécharger, à chaque visite, la...
Cacher une archive dans une image VoirIntroduction Cacher une archive dans une image Retrouver l'archive cachée Remarques importantes À voir également Introduction Cette astuce présente une méthode pour cacher un fichier dans un autre. En réalité, on va faire une sorte de...
PHP - Génération d'images VoirPrérequis PHP permet de créer des images au format GIF à l'aide d'une librairie de fonctions prévue à cet effet. La librairie permettant de créer et manipuler des fichiers graphiques se nomme GD, ainsi, pour pouvoir utiliser ces fonctions il faut...

1

kilian, le 2 oct 2004 à 00:34:35

Essaies avec ça http://fr2.php.net/header#AEN41309 :-)

Kilian, débutant en tâche de fond.....

Répondre à kilian

2

RideZeBigOne, le 2 oct 2004 à 10:33:33

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

Répondre à RideZeBigOne

3

RideZeBigOne, le 2 oct 2004 à 10:47:54

Euh... bah non finalement ca marche pas si bien que ca :(((

ca a du marcher sur qqles images mais maintenant ca reste tjrs sur l'image d'origine

les boules...

Répondre à RideZeBigOne

4

kilian, le 2 oct 2004 à 14:40:09

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

Kilian, débutant en tâche de fond.....

Répondre à kilian

5

Ben, le 26 oct 2004 à 21:29:32

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 :

<?
	if (empty($refresh)) {
	echo "<meta http-equiv='refresh' content='0;URL=http://tonsite.com/tonfichier.php?refresh=1'>";
	}
?>


En attendant mieux...

Répondre à Ben

6

RideZeBigOne, le 27 oct 2004 à 18:37:16
  • +1

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-E­viter-le-cache-de-l%27explorateur-web

A+
RideZeBigOne

Répondre à RideZeBigOne

7

cac, le 17 jui 2006 à 15:18:15

Bonjour, j'aibien lu ton post et l'ai appliqué, mais cela ne fonctionne pas pour moi....je mets bien l'heure en parametre (apres le ?) lorsque que j'appelle mon fichier php generateur de graphe jpgraph pour que l'appel soit different a chaque fois mais j'obtient toujours le meme graphe....le 1er qui ete generé avec ce nom de fichier....je craque...
merci pour tout autre conseil!!!

Répondre à cac

8

rourgo, le 9 mai 2007 à 21:40:11

A si c'est génial !!
j'avais exactement le meme probleme, et c'est le seul truc qui marche !!

Répondre à rourgo

9

 Invite, le 9 jui 2009 à 10:20:45
  • +1

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

Répondre à Invite
Collection CommentÇaMarche.net