Czy przeglądarka nie może po prostu używać pamięci podręcznej z wcześniejszych połączeń ajaxowych?

Próbuję polegać na pamięci podręcznej przeglądarki do przechowywania danych JSON zwróconych z wywołań AJAX w jQuery.

Normalna aktywność przeglądarki zależy od pamięci podręcznej przeglądarki. Przykład: obrazy jpg i gif nie są ponownie skanowane podczas przeładowania strony.

Ale gdy próbuję użyć wywołań jQuery getJSON ajax, nie mogę uniknąć pobierania danych z serwera.

Moje zwrócone nagłówki wyglądają tak (potwierdzone przez 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

Jednak natychmiastowe odświeżenie strony powoduje identyczne żądania trafienia na serwer.

Widziałem kilka postów na temat unikania zachowań w pamięci podręcznej, czego nie potrzebuję. Widziałem kilka postów na temat wykorzystania buforowania, ale wszystkie wydają się polegać na zapisywaniu danych w DOM. Chcę coś, co zachowuje się jak obrazy buforowane podczas przeładowania strony.

Czy przeglądarka po prostu pobiera ją z własnej pamięci podręcznej?

--x - x - x - x UPDATE --x - x - x--

Ku mojemu rozczarowaniu, kilku szanowanych ludzi zgadza się, że nie jest to możliwe. Niektórzy nawet twierdzą, że tak nie powinno być (co wciąż mnie zaskakuje).

Stubburn do winy, próbowałem:

Ustawiam nagłówek Etag na wszystkich stronach wychodzących, które chcę przechowywać w pamięci podręcznej (wybieram kilka argumentów wyboru adresu URL, które reprezentują dane, których żądam, i po prostu używam tego dla wartości Etag)

Na początku następnego żądania po prostu sprawdzam, czy nagłówek „If-None-Match” znajduje się w żądaniu. Jeśli tak, przeglądarka nie buforuje żądania tak, jak chciałem, więc wysłałem odpowiedź 304 Not Modified.

Testy pokazują, że Firefox nie buforuje mojej prośby (ale wciąż mogę uniknąć „pobrania drogich danych” części mojego cgi), podczas gdy IE6 faktycznie ją buforuje (a nawet nie spróbuje pobrać z serwera).

To nie jest ładna odpowiedź, ale na razie działa dla mnie
(te paskudne odświeżenia całej strony danych wykresu nie będą już tak powolne lub kosztowne).

(Co? Używam IE6! OMG! Oh, spójrz na wiewiórkę!)

questionAnswers(5)

yourAnswerToTheQuestion