Hintergrund
Ich schreibe und verwende ein sehr einfaches CGI-basiertes (Perl) Content-Management-Tool für zwei Pro-Bono-Websites. Es stellt dem Website-Administrator HTML-Formulare für Ereignisse zur Verfügung, in denen die Felder (Datum, Ort, Titel, Beschreibung, Links usw.) ausgefüllt und gespeichert werden. Auf diesem Formular erlaube ich dem Administrator, ein Bild hochzuladen, das sich auf das Ereignis bezieht. Auf der HTML-Seite, auf der das Formular angezeigt wird, wird auch eine Vorschau des hochgeladenen Bildes angezeigt (HTML-IMG-Tag).
Das Problem
Das Problem tritt auf, wenn der Administrator das Bild ändern möchte. Er musste nur die Schaltfläche "Durchsuchen" drücken, ein neues Bild auswählen und auf OK klicken. Und das funktioniert gut.
Sobald das Bild hochgeladen wurde, übernimmt mein Back-End-CGI den Upload und lädt das Formular ordnungsgemäß neu.
Das Problem ist, dass das gezeigte Bild nicht aktualisiert wird. Das alte Bild wird weiterhin angezeigt, obwohl die Datenbank das richtige Bild enthält. Ich habe es auf die Tatsache eingegrenzt, dass das BILD im Webbrowser zwischengespeichert wird. Wenn der Administrator in Firefox / Explorer / Safari auf die Schaltfläche RELOAD klickt, wird alles ordnungsgemäß aktualisiert und das neue Bild wird nur angezeigt.
Meine Lösung - funktioniert nicht
Ich versuche, den Cache durch Schreiben einer HTTP Expires-Anweisung mit einem Datum zu steuern, das sehr weit in der Vergangenheit liegt.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Denken Sie daran, dass ich auf der administrativen Seite bin und es mir egal ist, ob das Laden der Seiten etwas länger dauert, da sie immer abgelaufen sind.
Dies funktioniert aber auch nicht.
Anmerkungen
Beim Hochladen eines Bildes wird dessen Dateiname nicht in der Datenbank gespeichert. Es wird als umbenannt Image.jpg (einfach Dinge bei der Verwendung von it). Wenn Sie das vorhandene Bild durch ein neues ersetzen, ändert sich auch der Name nicht. Nur der Inhalt der Bilddatei ändert sich.
Der Webserver wird vom Hosting-Service / ISP bereitgestellt. Es verwendet Apache.
Frage
Gibt es eine Möglichkeit, den Webbrowser zu zwingen, KEINE Dinge von dieser Seite zwischenzuspeichern, nicht einmal Bilder?
Ich jongliere mit der Option, den Dateinamen tatsächlich mit der Datenbank zu speichern. Auf diese Weise ändert sich auch der Quellcode des IMG-Tags, wenn das Bild geändert wird. Dies erfordert jedoch viele Änderungen auf der gesamten Website und ich mache es lieber nicht, wenn ich eine bessere Lösung habe. Dies funktioniert auch immer noch nicht, wenn das neu hochgeladene Bild denselben Namen hat (sagen wir, das Bild wird ein wenig mit Photoshops versehen und erneut hochgeladen).