Фон
Я пишу и использую очень простой инструмент управления контентом на основе CGI (Perl) для двух сайтов pro-bono. Он предоставляет администратору веб-сайта HTML-формы для событий, где они заполняют поля (дата, место, название, описание, ссылки и т.д.) И сохраняют его. В этой форме я разрешаю администратору загружать изображение, связанное с событием. На странице HTML, отображающей форму, я также показываю предварительный просмотр загруженного изображения (тег HTML img).
Проблема
Проблема возникает, когда администратор хочет изменить изображение. Ему просто нужно нажать кнопку "просмотреть", выбрать новую картинку и нажать "ОК". И это прекрасно работает.
После загрузки изображения мой внутренний CGI обрабатывает загрузку и перезагружает форму.
Проблема заключается в том, что изображение, показанное , не обновляется. Старое изображение все еще отображается, хотя база данных содержит правильное изображение. Я сузил его до того, что IMAGE IS CACHED в веб-браузере. Если администратор нажимает кнопку RELOAD в Firefox/Explorer/Safari, все становится хорошо обновленным и появляется новое изображение.
Мое решение - не работает
Я пытаюсь управлять кешем, написав инструкцию HTTP Expires с датой, очень далекой в прошлом.
Expires: Mon, 15 Sep 2003 1:00:00 GMT
Помните, что я нахожусь на стороне администратора, и мне все равно, что страницы занимают немного больше времени, потому что они всегда истек.
Но это тоже не работает.
Примечания
При загрузке изображения его имя не сохраняется в базе данных. Он переименовывается как Image.jpg (просто для использования при его использовании). При замене существующего изображения на новое имя также не изменяется. Просто изменяется содержимое файла изображения.
Веб-сервер предоставляется службой хостинга /ISP. Он использует Apache.
Вопрос
Есть ли способ заставить веб-браузер НЕ кэшировать вещи с этой страницы, даже изображения?
Я жонглирую с возможностью фактически "сохранить имя файла" в базе данных. Таким образом, если изображение будет изменено, src тега IMG также изменится. Однако для этого требуется много изменений на всем сайте, и я не хочу этого делать, если у меня есть лучшее решение. Кроме того, это все равно не будет работать, если новое загруженное изображение имеет одно и то же имя (скажем, изображение немного портировано и повторно загружено).