Я передаю изображение обратно со следующим заголовком ответа HTTP:
Cache-Control: private,max-age=86400
Мое понимание - то, что браузер даже не должен просить этот файл в течение 24 часов (86,400 = 60-е * 60 м * 24-й).
То, что я вижу по последующим запросам, - то, что это все еще просит файл, но возвращает "304, Не Измененные". Это хорошо, но я хочу удалить даже тот запрос/ответ.
Что заголовок требуется, чтобы предотвращать браузер от ровного того, чтобы потрудиться попросить файла, и просто иметь его вслепую используют файл, который это имеет в локальном кэше, пока тот файл не истекает?
Все действительно зависит от того, как вы это тестируете. В Firefox 3.6 и IE8 при нажатии на ссылку, а затем на ссылку, которая переместит вас обратно на первую страницу, кэш будет использоваться правильно с max-age. Повторное нажатие клавиши Return в поле URL приводит к такому же поведению.
Однако нажатие клавиши F5 снова запрашивает файл, но разрешает 304 ответ.
Нажатие Ctrl+F5 всегда будет запрашивать файл снова, с Cache-Control и Pragma, установленными на no-cache, заставляя отвечать 200.
Это просто невозможно сделать надежно в HTML <5.
Вы можете использовать хранилище на стороне клиента в HTML5 или использовать расширение браузера, например Шестерни для обеспечения этой функции.