web-dev-qa-db-fra.com

Problème avec la mise en cache des images par le navigateur

Je suis sûr que de nombreux administrateurs de site doivent traiter ce type de problème tout le temps, mais je n'ai pas de solution simple et efficace à la fois. C'est ce qui se passe lorsque vous écrasez une image existante sur le serveur. Le navigateur du visiteur du site affiche toujours l'ancien et doit être actualisé pour afficher l'image mise à jour (et la feuille de style en l'occurrence).

Existe-t-il une solution simple pour inciter le navigateur à actualiser le cache lorsqu’une nouvelle image utilisant l’ancien nom? Et oui, bien sûr, la solution évidente est de renommer l’image, mais supportez-moi et supposons que ce n’est pas toujours une bonne solution ...

Et ceci est pour Drupal sites au cas où cela concerne la question.

============================

REPONSE: Basé sur la réponse ci-dessous, j'utilise maintenant ce code:

<?php
echo 'niceimage.jpg?'.date("dmHi", filemtime('niceimage.jpg'));
?>

Ceci met automatiquement à jour la chaîne de requête d'image chaque fois que le fichier image est modifié, en fonction de la date de modification du fichier image.

4
Michael D

Une méthode courante consiste à ajouter une chaîne de requête au nom du fichier, comme suit:

/images/coolpic.png?randomchars

L'ajout de la chaîne de requête consiste essentiellement à "renommer" le fichier afin que le navigateur le récupère. La chaîne de requête est évidemment inutile pour une image, une feuille de style ou d'autres fichiers statiques. Elle est donc ignorée et ne casse rien.

3
John Conde