Mam aplikację internetową, która umożliwia przeglądanie pamięci podręcznej AJAX przez długi czas. Dowiedziałem się, jak złożyć wniosek, że całkowicie pomija cache, gdy zostaną wykryte prawdopodobne modyfikacje. Ale chciałbym, aby użytkownik uruchomił odświeżanie danych.Wymuszenie żądania AJAX, aby ponownie potwierdzić pamięć podręczną z serwerem, bez ponownego ładowania.
w tym scenariuszu, chciałbym przeglądarkę aby skontaktować się z serwerem, jeśli bufor jest zablokowana ale go używać, jeśli nie jest (to znaczy, jeśli serwer odpowiada z kodem 304). Celem jest zaoszczędzenie czasu ładowania, ponieważ dane są ogromne.
Serwer obejmuje następujące nagłówki we wszystkich odpowiedzi:
Cache-Control: private, max-age=604800
Last-Modified: ... # actual last modification date
udało mi się rozbić pamięci podręcznej obiekt całkowicie w Chrome (nie przetestowane innych przeglądarek jeszcze) za pomocą następujących nagłówków HTTP we wniosku:
Cache-Control: max-age=0
If-Last-Modified: Tue, 01 Jan 1970 01:00:00 +0100
Linia If-Last-Modified
to taka, która naprawdę działa. Wygląda na to, że Chrome ignoruje nagłówek Cache-Control
w żądaniu.
Zauważyłem również, że użycie Cache-Control: must-revalidate
w odpowiedzi serwera zmusza przeglądarkę do sprawdzenia poprawności jej pamięci podręcznej z serwerem pod kątem dla każdego żądania.
Ale czy istnieje jakaś możliwość ponownego zatwierdzenia tylko na jedno dokładne zapytanie, zadecydował klient po stronie klienta?
Zauważ, że nie jestem do tego specjalnie przywiązany przy użyciu nagłówków HTTP, więc każda inna metoda, o której nie wiedziałbym, jest mile widziana!
Po prostu użyj 'If-Last-Modified' z ostatnim nagłówkiem odpowiedzi" Last-Modified ". –
Próbowałem tego, a ja dostałem 304 z serwera, ale przeglądarka nie używa pamięci podręcznej do wypełnienia odpowiedzi, więc jest pusta w kodzie ... Przypuszczam, że przeglądarka nie wykazuje zainteresowania w nagłówku 'If-Last-Modified' nie został dodany. – rixo
Następnie, zakładając, że samodzielnie buforujesz ostatnią odpowiedź, musisz to zrobić ręcznie, tj. Jeśli odpowiedź wynosi 200, zastąp pamięć podręczną, a jeśli odpowiedź jest równa 304, użyj starej kopii. Można go łatwo wyodrębnić. –