Разве браузер не может просто использовать свой кеш от предыдущих вызовов ajax?

Я пытаюсь положиться на кеш браузера для хранения Данные JSON возвращаются из вызовов AJAX в jQuery.

Нормальная активность браузера постоянно зависит от кеша браузера. Пример: изображения jpg и gif не перезагружаются при перезагрузке страницы.

Но когда я пытаюсь использовать jQuery getJSON ajax-вызовы, я не могу избежать извлечения данных с сервера.

Мои возвращенные заголовки выглядят так (подтверждено firebug):

Transfer-Encoding: chunked
Date: Wed, 05 Aug 2009 02:55:39 GMT
Content-Type: text/plain; charset=ISO-8859-1
Expires: Wed, 05 Aug 2009 03:55:39 GMT
Cache-Control: max-age=3600

Тем не менее, немедленное обновление страницы приводит к тому, что идентичные запросы попадают на сервер.

Я видел несколько сообщений о том, как избежать кеширования, а это не то, что мне нужно. Я видел несколько сообщений об использовании кэширования, но, похоже, все они полагаются после сохранения данных в DOM. Я хочу что-то, что ведет себя так же, как кэшированные изображения во время перезагрузки страницы.

Может ли браузер просто извлечь его из собственного кэша?

--x - x - x - x ОБНОВЛЕНИЕ --x - x - x--

К моему большому разочарованию, несколько уважаемых людей согласны с тем, что это не просто возможно. Некоторые даже утверждают, что это не должно быть (что все еще сбивает с толку меня).

Стабберн по вине, я попробовал следующее:

Я устанавливаю заголовок Etag на всех исходящих страницах, которые я хочу кэшировать (Я выбрал несколько URL-аргументов выбора, которые представляют запрашиваемые мной данные, и просто использую их для значения Etag)

В начале следующего запроса я просто проверяю, является ли 'If-None-Match' apos; Заголовок в запросе. Если это так, то браузер не кэширует запрос так, как я хотел, поэтому я отправил ответ 304 Not Modified.

Тестирование показывает, что Firefox не кеширует мой запрос (но я все еще могу избежать «получения дорогих данных» части моего cgi), в то время как IE6 фактически кеширует его (и даже не будет пытаться получить обратно с сервера).

Это не очень хороший ответ, но сейчас он работает для меня.
(эти надоедливые полностраничные обновления графических данных теперь не будут такими медленными или дорогими).

(Что? Я запускаю IE6! Боже мой! О, смотри, белка!)

Ответы на вопрос(5)

Ваш ответ на вопрос