mardi 6 février 2007, 18:00
Empêcher la mise en cache d'éléments
Par Sven CAILTEUX - PHP - Lien permanent
L'utilisation des balises "meta" posent souvent problème avec les différents navigateurs. Voici deux solutions indépendantes du navigateur, pour s'affranchir de ce problème, l'une en PHP et l'autre en JavaScript.
On va tirer parti du fait que si l'on envoie un paramètre différent dans l'adresse, le navigateur ira chercher l'élément sur le serveur.
La solution consiste donc à générer un paramètre aléatoire derrière l'adresse de l'élément.
Voici une fonction PHP :
[php]
A présent si vous souhaitez ne pas charger dans le cache une image il vous suffira de faire ceci :
[php]![]()
Vous trouverez à cette adresse un exemple d'une image qui ne se charge pas dans le cache, elle pèse plus d'1 méga pour que vous puissiez vous rendre compte de l'effet http://www.dimension-internet.com/dev/nocache.php
A présent si vous ne disposez pas de PHP ou ne souhaitez pas l'utiliser, voici une autre solution en Javascript (auteur du code SF):
MonImage.src='image.jpg?'+new Date()*Math.random()
En espérant que celà puisse vous aider, n'hésitez pas à laisser un commentaire 
2 commentaires
Bonsoir,
ta méthode met en cache l'image, et même plusieurs fois, en fait à chaque fois qu'elle est chargée elle est mise dans le cache du navigateur. Certes elle se rafraichie à chaque fois car le navigateur crois avoir à faire à une nouvelle image mais il la garde au chaud pour une prochaine fois qui n'arrive jamais. Du coup ta méthode surcharge le cache de l'utilisateur.
Cette solution ne surcharge en rien le cache de l'utilisateur.
D'ailleurs le terme surcharge n'est pas correct car il indiquerait alors que le cache dépasse la mémoire allouée par l'utilisateur ce qui n'est absolument pas le cas.
Si l'on utilise cette méthode c'est justement pour que l'image présentée soit à jour, si tu avais pris la peine de changer l'image en la renommant, le résultat serait le même.
Le cache est limité par l'utilisateur, il se purgera tout seul au fur et à mesure, il n'y a donc aucun problème à l'utilisation de cette méthode.
bonne journée