Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Images dynamiques et cache sous IE

6 réponses
Avatar
bas
Bonjour,

Je génère des images dynamiques pour un menu.
J'ai constaté que Firefox mettait bien en cache ces images alors que IE
les recharges a chaque requête. Y'a-t-il un moyen de faire ne sorte que
IE mette en cache des images php dynamiques (librairie GD).

Exemple de code que j'utilise pour generer l'image:
-------------
header("Content-type: image/gif");
$im = @imagecreatefromgif("image.gif");
$fontcolor = imagecolorallocate($im, 255,255,255);
imagettftext($im, 10, 0, 5, 5, $fontcolor,
"/home/path/www/images/menu/myriadb.ttf","texte dans image");
imagegif($im);
imagedestroy($im);
-------------


Merci pour votre aide.


Bas

6 réponses

Avatar
Olivier Miakinen

Je génère des images dynamiques pour un menu.
J'ai constaté que Firefox mettait bien en cache ces images alors que IE
les recharges a chaque requête. Y'a-t-il un moyen de faire ne sorte que
IE mette en cache des images php dynamiques (librairie GD).

Exemple de code que j'utilise pour generer l'image:
-------------
header("Content-type: image/gif");
[...]


Tu dois pouvoir rajouter un header("Last-modified: ".$lastmodified); où
la variable $lastmodified sera renseignée selon la doc suivante :
<http://php.planetmirror.com/manual/en/function.getlastmod.php>
<http://php.planetmirror.com/manual/fr/function.getlastmod.php>

Avatar
Lascap
Idée qui vaut ce qu'elle vaut :
appelle tes images en ajoutant un truc-machin-chose aléatoire, en
argument. Ce @#"#% d'IE croira à une nouvelle image.
ex : <img src="image.gif?anticacheC5423" />

Lascap
Avatar
Olivier Miakinen

Idée qui vaut ce qu'elle vaut :
appelle tes images en ajoutant un truc-machin-chose aléatoire, en
argument. Ce @#"#% d'IE croira à une nouvelle image.
ex : <img src="image.gif?anticacheC5423" />


... sauf que justement c'est tout le contraire qu'il ou elle cherche à
faire : que IE reconnaisse que c'est la même image, et que donc il la
mette en cache.

Note que la solution du Last-modified doit fonctionner pour cet autre
besoin également, et c'est même un exemple que l'on trouve dans la doc
de la fonction header : http://fr2.php.net/manual/en/function.header.php

Avatar
Matt
bas wrote:
Bonjour,
...

Exemple de code que j'utilise pour generer l'image:
-------------
header("Content-type: image/gif");
$im = @imagecreatefromgif("image.gif");
$fontcolor = imagecolorallocate($im, 255,255,255);
imagettftext($im, 10, 0, 5, 5, $fontcolor,
"/home/path/www/images/menu/myriadb.ttf","texte dans image");
imagegif($im);
imagedestroy($im);
-------------


Tu peux également utiliser (entre autres) les headers HTTP suivants:

Cache-Control: no-cache
ETag
Last-Modified
Expires

--
Matt
http://www.php-help.net

Avatar
Lascap
Olivier Miakinen wrote:


... sauf que justement c'est tout le contraire qu'il ou elle cherche à
faire : que IE reconnaisse que c'est la même image, et que donc il la
mette en cache.



A ben oui tiens... autant pour moi, mais c'est bien la première fois que
j'entend que IE ne veut pas mettre des trucs en cache. Il aurait plutot
tendance à faire le contraire, d'habitude, et notamment à ne pas tenir
compte des Cache-Control: no-cache et autres..

désolé.
Lascap

Avatar
bas
Olivier Miakinen wrote:

Je génère des images dynamiques pour un menu.
J'ai constaté que Firefox mettait bien en cache ces images alors que IE
les recharges a chaque requête. Y'a-t-il un moyen de faire ne sorte que
IE mette en cache des images php dynamiques (librairie GD).

Exemple de code que j'utilise pour generer l'image:
-------------
header("Content-type: image/gif");
[...]



Tu dois pouvoir rajouter un header("Last-modified: ".$lastmodified); où
la variable $lastmodified sera renseignée selon la doc suivante :
<http://php.planetmirror.com/manual/en/function.getlastmod.php>
<http://php.planetmirror.com/manual/fr/function.getlastmod.php>


Merci ça marche parfaitement.
J'envoi le header suivant qui envoi la date de dernière modification de
l'image :

header("Last-Modified: " . date ("F d Y H:i:s.", getlastmod()));

Merci à tous.

Bas