tło
Piszę i używam bardzo prostego narzędzia do zarządzania treścią opartego na CGI (Perl) dla dwóch witryn pro-bono. Udostępnia administratorowi strony formularze HTML do wydarzeń, w których wypełnia pola (data, miejsce, tytuł, opis, linki itp.) I zapisuje je. Na tym formularzu pozwalam administratorowi na przesłanie zdjęcia związanego z wydarzeniem. Na stronie HTML wyświetlającej formularz pokazuję również podgląd wgranego zdjęcia (tag HTML img).
Problem
Problem pojawia się, gdy administrator chce zmienić obrazek. Musiałby po prostu nacisnąć przycisk „Przeglądaj”, wybrać nowe zdjęcie i wcisnąć ok. I to działa dobrze.
Po załadowaniu obrazu mój back-end CGI obsługuje przesyłanie i ponownie ładuje formularz.
Problem polega na tym, że wyświetlany obraz nie jest odświeżany. Stary obraz jest nadal wyświetlany, mimo że baza danych zawiera właściwy obraz. Ograniczyłem to do faktu, że OBRAZ JEST CACHOWANY w przeglądarce internetowej. Jeśli administrator naciśnie przycisk RELOAD w przeglądarce Firefox / Explorer / Safari, wszystko zostanie poprawnie odświeżone i nowy obraz po prostu się pojawi.
Moje rozwiązanie - nie działa
Próbuję kontrolować pamięć podręczną, pisząc instrukcję HTTP Expires z datą bardzo dawną w przeszłości.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Pamiętaj, że jestem po stronie administracyjnej i nie obchodzi mnie, czy ładowanie stron trwa trochę dłużej, ponieważ zawsze wygasają.
Ale to też nie działa.
Uwagi
Podczas przesyłania obrazu jego nazwa pliku nie jest przechowywana w bazie danych. Został zmieniony na Image.jpg (aby po prostu rozwiązać problem podczas korzystania z niego). Podczas zastępowania istniejącego obrazu nowym, nazwa również się nie zmienia. Zmienia się tylko zawartość pliku obrazu.
Serwer WWW jest udostępniany przez usługę hostingową / dostawcę usług internetowych. Używa Apache.
Pytanie
Czy istnieje sposób, aby zmusić przeglądarkę internetową, aby NIE buforowała rzeczy z tej strony, nawet obrazów?
Żongluję opcją „zapisania nazwy pliku” w bazie danych. W ten sposób, jeśli obraz zostanie zmieniony, zmieni się również src tagu IMG. Wymaga to jednak wielu zmian w całej witrynie i raczej nie robię tego, jeśli mam lepsze rozwiązanie. Ponadto, to nadal nie zadziała, jeśli nowy przesłany obraz ma tę samą nazwę (powiedzmy, że obraz został trochę przerobiony w Photoshopie i ponownie przesłany).