Pourquoi une image dans une page html ne change pas alors que le fichier src a été modifié ?

Published: 12 juin 2019

DMCA.com Protection Status

Exemple de comment dire à une page html qu'une image a été modifiée:

Afficher une image en HTML

Pour afficher une image dans une simple page html on peut faire comme ceci (on a ici utilisé l'image: matplotlib-grid-02.png)

<!DOCTYPE html>
<html>
<body>

<img src='matplotlib-grid-02.png'>

</body>
</html>

qui donne:

Pourquoi une image dans une page html ne change pas alors que le fichier src a été modifié ?
Pourquoi une image dans une page html ne change pas alors que le fichier src a été modifié ?

Cependant si on utilise une autre image (matplotlib-grid-04.png par exemple) que l'on renomme matplotlib-grid-02.png comme la première image et qu'on remplace celle-ci, les modifications ne seront pas prises en compte, même en rechargeant la page.

La raison est que votre navigateur internet ('browser') garde en mémoire l'image pour pouvoir ensuite télécharger la page plus rapidement.

Vider le cache

Pour voir la nouvelle image, du coté visiteur on peut simplement vider le cache. Par exemple avec chrome il suffit d'aller dans le menu View -> Developer -> Developer Tools; cliquer sur le bouton "Disable cache" er recharger la page:

Pourquoi une image dans une page html ne change pas alors que le fichier src a été modifié ?
Pourquoi une image dans une page html ne change pas alors que le fichier src a été modifié ?

Ajouter un timestamp

Du coté développeur on peut simplement ajouter un "timestamp" sur l'image pour indiquer au browser quand l'image a été modifiée et qu'il doit prendre en compte cette nouvelle image:

?lastmod=timestamp

changer timestamp par la date à laquelle l'image a été modifiée (voir par exemple timestampgenerator.com/)

<!DOCTYPE html>
<html>
<body>

<img src='matplotlib-grid-02.png?lastmod=1560360993'>

</body>
</html>

Références

Image

of