web-dev-qa-db-fra.com

Forcer le navigateur à charger une nouvelle image

J'ai récemment effectué un travail de remplacement d'image pour un client. Il m'envoie les nouveaux fichiers image png et je les télécharge en remplaçant les anciens par des nouveaux (en conservant le même nom). Je lui dis que pour voir les nouvelles images, il a besoin d'actualiser sa page (Maj + Actual), mais je peux dire qu'il se demande quand ses clients verront ces nouvelles images. Pour être honnête, je ne me connais pas. Je ne peux pas sembler savoir non plus; Je me suis également demandé si je pouvais informer le navigateur de la modification d'une image et j'ai pensé que je pourrais peut-être utiliser des balises méta pour le faire, mais il semble que non.

Quelqu'un peut-il m'éclairer sur ce problème, quand le navigateur décide-t-il (s'il est laissé à ses propres périphériques) de supprimer les images en cache et de charger les nouvelles du serveur, et y a-t-il un moyen d'influencer cela (autre que d'utiliser un fichier différent nom et recodage du HTML et du CSS pour refléter les changements, ce qui, je suppose, fonctionnerait)

1
byronyasgur

Ajoutez un caractère au nom de l'image remplacée et vous avez résolu le problème!

Le problème est la mise en cache du navigateur. J'utilise le code suivant pour définir des dates d'expiration très éloignées pour tous les supports afin d'éviter que les navigateurs ne re-téléchargent des ressources couramment utilisées, telles que des images, entre les chargements de pages.

Vous pouvez utiliser le même code pour provoquer l'effet inverse en modifiant la date ...

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|ico|js|css|swf)(\.gz)?$">
Header set Expires "Thu, 15 Apr 2020 20:00:00 GMT"
Header unset ETag
FileETag None
</FilesMatch>

Mais la taille des caches du navigateur et d'autres variables sont définies sur la machine des utilisateurs et vous ne pouvez rien faire pour garantir que l'image soit mise à jour (au-delà de la modification du nom de fichier).

Faire de telles choses a également un effet négatif sur le site et sur l'utilisateur: augmentation de la bande passante et du chargement de pages, ce qui est mauvais pour le référencement et mauvais pour, eh bien, tout.

1
toomanyairmiles