Contexte
J'écris et j'utilise un outil de gestion de contenu basé sur CGI (Perl) très simple pour deux sites Web pro-bono. Il fournit à l'administrateur du site Web des formulaires HTML pour les événements où ils remplissent les champs (date, lieu, titre, description, liens, etc.) et les enregistrent. Sur ce formulaire, j'autorise l'administrateur à télécharger une image liée à l'événement. Sur la page HTML affichant le formulaire, j'affiche également un aperçu de l'image téléchargée (balise HTML img).
Le problème
Le problème se produit lorsque l'administrateur souhaite modifier l'image. Il lui suffirait d'appuyer sur le bouton "parcourir", de choisir une nouvelle image et d'appuyer sur ok. Et cela fonctionne très bien.
Une fois l'image téléchargée, mon CGI back-end gère le téléchargement et recharge le formulaire correctement.
Le problème est que l'image affichée ne se rafraîchit pas. L'ancienne image est toujours affichée, même si la base de données contient la bonne image. Je l'ai réduit au fait que l'IMAGE EST CACHÉE dans le navigateur Web. Si l'administrateur clique sur le bouton RELOAD dans Firefox / Explorer / Safari, tout est bien rafraîchi et la nouvelle image apparaît juste.
Ma solution - ne fonctionne pas
J'essaie de contrôler le cache en écrivant une instruction HTTP Expires avec une date très éloignée du passé.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Rappelez-vous que je suis du côté administratif et que je ne me soucie pas vraiment si les pages prennent un peu plus de temps à se charger car elles sont toujours expirées.
Mais cela ne fonctionne pas non plus.
Remarques
Lors du téléchargement d'une image, son nom de fichier n'est pas conservé dans la base de données. Il est renommé Image.jpg (pour simplement faire des choses lors de son utilisation). Lors du remplacement de l'image existante par une nouvelle, le nom ne change pas non plus. Seul le contenu du fichier image change.
Le serveur Web est fourni par le service d'hébergement / FAI. Il utilise Apache.
Question
Existe-t-il un moyen de forcer le navigateur Web à NE PAS mettre en cache des éléments de cette page, pas même des images?
Je jongle avec l'option de "sauvegarder le nom de fichier" avec la base de données. De cette façon, si l'image est modifiée, le src de la balise IMG changera également. Cependant, cela nécessite beaucoup de changements sur tout le site et je préfère ne pas le faire si j'ai une meilleure solution. De plus, cela ne fonctionnera toujours pas si la nouvelle image téléchargée porte le même nom (disons que l'image est un peu photoshoppée et retéléchargée).