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…
:))
Excellente astuce ! :))
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