Задний план
Я пишу и использую очень простой инструмент управления контентом на основе CGI (Perl) для двух бесплатных веб-сайтов. Он предоставляет администратору веб-сайта HTML-формы для событий, в которых они заполняют поля (дата, место, заголовок, описание, ссылки и т. Д.) И сохраняют их. В этой форме я разрешаю администратору загрузить изображение, связанное с событием. На странице HTML, отображающей форму, я также показываю предварительный просмотр загруженного изображения (тег HTML img).
Эта проблема
Проблема возникает, когда администратор хочет изменить картинку. Ему просто нужно было нажать кнопку «Обзор», выбрать новое изображение и нажать ОК. И это прекрасно работает.
После загрузки изображения мой серверный CGI обрабатывает загрузку и правильно перезагружает форму.
Проблема в том, что показанное изображение не обновляется. Старое изображение по-прежнему отображается, даже если в базе данных содержится правильное изображение. Я сузил его до того факта, что ИЗОБРАЖЕНИЕ КЕШЕНО в веб-браузере. Если администратор нажимает кнопку ПЕРЕЗАГРУЗИТЬ в Firefox / Explorer / Safari, все обновляется нормально и просто появляется новое изображение.
Мое решение - не работает
Я пытаюсь управлять кешем, написав инструкцию HTTP Expires с датой, очень далекой от прошлого.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Помните, что я нахожусь на административной стороне, и мне все равно, если загрузка страниц занимает немного больше времени, потому что у них всегда истекает срок действия.
Но это тоже не работает.
Ноты
При загрузке изображения его имя файла не сохраняется в базе данных. Он переименован в Image.jpg. (для простоты использования). При замене существующего изображения на новое имя также не меняется. Меняется только содержимое файла изображения.
Веб-сервер предоставляется хостинг-сервисом / интернет-провайдером. Он использует Apache.
Вопрос
Есть ли способ заставить веб-браузер НЕ кэшировать данные с этой страницы, даже изображения?
Я жонглирую возможностью фактически «сохранить имя файла» с базой данных. Таким образом, если изображение будет изменено, src тега IMG также изменится. Однако для этого потребуется много изменений по всему сайту, и я бы предпочел не делать этого, если у меня есть лучшее решение. Кроме того, это все равно не сработает, если новое загруженное изображение имеет то же имя (скажем, изображение немного отфотошоплено и повторно загружено).