Próbuję polegać na pamięci podręcznej przeglądarki, aby przechowywać dane JSON zwrócone z wywołań AJAX w jQuery.Czy przeglądarka nie może używać swojej pamięci podręcznej z poprzednich wywołań ajax?
Normalna aktywność przeglądarki zależy od pamięci podręcznej przeglądarki przez cały czas. Przykład: obrazy jpg i gif nie są ponownie rysowane po przeładowaniu strony.
Ale kiedy próbuję używać wywołań ajax jQuery getJSON ajax, nie mogę uniknąć pobierania danych z serwera.
Moi zwracane nagłówki wyglądać następująco (potwierdzone 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, aby uderzyć serwer.
Widziałem kilka wpisów dotyczących unikania zachowań pamięci podręcznej, które nie są tym, czego potrzebuję. Widziałem kilka postów na temat korzystania z buforowania, ale wszystkie one polegają po zapisaniu danych w DOM. Chcę coś, co zachowuje się tak, jak robią obrazy w pamięci podręcznej podczas przeładowania strony.
Cant przeglądarki po prostu pobrać go z własnej pamięci podręcznej?
--x - x - x - x UPDATE --x - x - X--
Ku mojemu rozczarowaniu, kilka szacowni ludzie zgadzają się, że nie jest to tylko możliwe. Niektórzy twierdzą nawet, że nie powinno to być (co wciąż mnie niepokoi).
Stubburn do winy, próbowałem następujące:
ustawić nagłówek wytycznych na wszystkich stronach wychodzących Chcę być buforowane (wybiorę kilka argumentów wybór URL, które reprezentują dane i jestem z prośbą po prostu użyj tego dla wartości Etag)
Na początku następnego wniosku, po prostu sprawdzam, czy w zapytaniu znajduje się nagłówek "If-None-Match". Jeśli tak, to przeglądarka nie buforuje żądania tak, jak chciałem, więc wysłałem odpowiedź 304 niezmodyfikowaną.
Badanie pokazuje, że Firefox nie będzie buforować moją prośbę (ale nadal mogę uniknąć „sprowadzić drogie dane” część mojego CGI), podczas gdy IE6 rzeczywiście buforować go (i przyzwyczajenie nawet próbować ściągam z powrotem serwer).
To nie jest ładna odpowiedź, ale na razie działa dla mnie
(te odświeżające pełne strony odświeżenia danych wykresowych nie będą teraz tak powolne i drogie).
(Co? Używam IE6! OMG! Oh wyglądać wiewiórkę!)
może trzeba użyć if-Modified-Since żądań HTTP przekonwertować te do 304 kodów stanu? – ericslaw
darn, nawet nagłówki "if-modified-since" są wysyłane na żądanie ... tak bardzo na 304 podejście – ericslaw
Miałem trochę szczęścia z ustawieniem Etag na początkowej prośbie i zwróceniem 304, jeśli istnieje nagłówek "If-None-Match" później wnioski. – ericslaw