Un petit probleme de refresh de graph sous IE

WRInaute accro
Mon probleme : sur une page j'affiche une liste + le graphique corespondant (une image fabriquée avec GD et stockée sur le serveur sous le nom "mongraphe" - donc c'est toujours le meme nom et le graphe est ecrasé a chaque fois que la liste bouge par le nouveau graphe). Ca ca marche tres bien.

Sauf que sous firefox le graphe affiché est automatiquement mis à jour alors que sous IE je suis obligé de faire un F5 pour qu'il veuille bien aller chercher la derniere version du graphe ...

Ca se règle comment ce type de probleme ?
 
WRInaute accro
S'il change souvent, en mettant un header Expires: très court (voire calculé explicitement si tu connais de façon précise la date et l'heure de la prochaine mise à jour) et/ou un Cache-Control avec un max-age, voire un no-cache.

S'il ne change pas très souvent (et surtout de façon imprévisible), la meilleure solution est probablement de changer le nom du fichier à chaque fois et de référencer le nouveau fichier.

YMMV.

Jacques.
 
WRInaute accro
jcaron a dit:
S'il change souvent, en mettant un header Expires: très court (voire calculé explicitement si tu connais de façon précise la date et l'heure de la prochaine mise à jour) et/ou un Cache-Control avec un max-age, voire un no-cache.
En fait il y a un graphe par jour nommé mongraphe-date. Si on l'affiche avec datedemandée < datedujour, le graphe n'est pas recalculé et directement affiché puisque en cache sur le serveur de fait. Si datedemandée = datedujour, des mouvements ont pu avoir lieu et il ets donc refabriqué et restocké ... mais l'affichage ne suit pas immediatement puisque sans changement de nom.

jcaron a dit:
S'il ne change pas très souvent (et surtout de façon imprévisible), la meilleure solution est probablement de changer le nom du fichier à chaque fois et de référencer le nouveau fichier.
difficile a mettre en place sans pondre une usine a gaz pour ce qui n'est qu'une illustration complémentaire d'une liste affcihée à coté ... bon ben je ferais avec. Ce qui est bizarre c'est que firefox lui fait bien le refresh sans qu'on lui dise rien ... donc je pensais a un réglage dans IE ...
 
WRInaute accro
En l'absence d'indications précises (Expires, Cache-control...), chaque browser fait (légitimement) un peu ce qu'il veut en terme de cache. Donc si tu veux un comportement cohérent, il faut leur dire ce qu'ils doivent faire, et mettre les Expires et/ou Cache-control qui vont bien. En gros, dans le cas présent, tu veux qu'il ne soit pas mis en cache, donc tu mets un Expires dans le passé et/ou un Cache-control no-cache, et tout le monde devrait revenir le chercher à chaque fois.

Jacques.
 
WRInaute accro
Et ca se fait comment cette bestiole ?

Actuellement ma fabrication du graphe se termine par :

Code:
ImagePng ($im, $chemingraphe.$nomgraphe);

Je vais donc enrober la chose ainsi :

Code:
if ($datedem < $datejour)
{
     // Dans ce cas le graphe ne bougera plus, donc validité permanente
     // on le fabrique une derniere fois de façon definitive
     ImagePng ($im, $chemingraphe.$nomgraphe);
}
else
{
     // Dans ce cas le graphe on fixe a 30 s la validité du graphe
     // Le temps de le laisser accessible pour la page en cours

     ********* on met quoi ci pour dire 30 secondes ?

     ImagePng ($im, $chemingraphe.$nomgraphe);
}
 
WRInaute accro
Vu que tu sauvegardes le fichier sous forme statique (plutôt que de le faire cracher directement par le script), il faut que tu ajoutes les headers au niveau Apache (dans ton .htaccess, quoi).

Un petit
<Files nomdufichierquichangetoutletemps>
Header set Expires "Sat, 01 Jan 2000 00:00:00 GMT"
Header set Cache-Control "no-cache"
</Files>

devrait probablement faire l'affaire (pas testé).

Jacques.
 
WRInaute accro
houla ....

Bon ben ca va rester comme c'est ... tant pis si le graphe est quelque fois un peu en decallage (je vais ajouter un commentaire "frappez la touche F5" :wink:
 
Discussions similaires
Haut