picture picture
juin 18, 2007 PHP 2 Commentaires

Mon cache ne se vide pas avec Internet Explorer 7 (IE7) quand je charge une page PHP ….

:[ de IE7 … et cela marche nickel avec Firefox. Vous trouverez ici petit solution pour contourner le problème et afficher des images par exemple.

 

Quelques heures de recherche pour trouver cette solution, je vous la partage.

Je cherchais à afficher dynamiquement des images extraites dynamiquement d’une base des données, rien que de très classique.

Le problème est venu de IE7 … quand je mettais à jour une photo dans la base, il continuait à afficher celle qu’il avait en cache.

J’avais bien entendu sorti le grand jeu des en-têtes de vidange des caches :

//————————–Blocage du Cache
$debut = gmdate("D, d M Y H:i:s");
header ("Expires: $debut GMT");
// Date d’expiration antérieure à la date actuelle
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// Indique de toujours modifier la date
header("Cache-Control: no-cache, must-revalidate");
// no-cache pour HTTP/1.1
header("Pragma: no-cache");
// no-cache pour HTTP/1.0
//————————————————

 

J’ai finalement trouvé cette solution (encore un "patch" aux failles de IE, m’énerve de perdre du temps à cause de ces problèmes répétitifs de compatibilités … :C ) :

Il suffit d’utiliser la fonction time d’UNIX. Plus besoin des headers META et autres no-cache etc…
Par exemple:

<img src="../wp-content/uploads/2010/dotclear/monimage.jpg?<?php echo time() ?>" alt= » />

Le code PHP avec la fonction time() génère un code html du type :
<img src="../wp-content/uploads/2010/dotclear/monimage.jpg?1161228656" alt="" />

IE trouve et affiche l’image "monimage.jpg" sans problème,
mais cette astuce trompe le cache qui compare "monimage.jpg?1161228656" :p
Or, comme ce chiffre change toutes les secondes, il recharge l’image à chaque nouvel appel de la page…

:))

2 Responses to “Mon cache ne se vide pas avec Internet Explorer 7 (IE7) quand je charge une page PHP ….”

2 Commentaires

  1. Ben dit :

    Excellente astuce ! :))

  2. Soon7 dit :

    Ahlala ce IE ! il nous fera toujours rire ! Mais souvent rire jaune effectivement, à cause des pirouettes qu’on est obligé de faire JUSTE pour lui ! aggrrrrrr! :C

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: