Ich habe eine Webanwendung, mit der der Browser lange Zeit AJAX-Anfragen zwischenspeichern kann. Ich habe herausgefunden, wie man eine Anfrage stellt, die den Cache komplett umgeht, wenn wahrscheinliche Modifikationen entdeckt werden. Aber ich möchte den Benutzer eine Datenaktualisierung auslösen lassen.
In diesem Szenario möchte ich, dass der Browser beim Server nachfragt, ob der Cache blockiert ist aber wenn er nicht ist (dh wenn der Server mit einem 304-Code antwortet) . Das Ziel ist es, die Ladezeit zu sparen, weil die Daten riesig sind.
Der Server enthält die folgenden Header in allen Antworten:
%Vor%Ich habe es geschafft, das zwischengespeicherte Objekt komplett in Chrome zu platzen (andere Browser wurden noch nicht getestet), indem ich die folgenden HTTP-Header in der Anfrage verwendete:
%Vor% Die If-Last-Modified
-Zeile ist diejenige, die wirklich einen Effekt hat. Chrome scheint den Header Cache-Control
in der Anfrage zu ignorieren.
Ich habe auch festgestellt, dass die Verwendung von Cache-Control: must-revalidate
in der Serverantwort den Browser zwingt, seinen Cache mit dem Server für jede Anfrage zu validieren.
Aber gibt es eine Möglichkeit, für nur eine spezifische Anfrage zu revalidieren, die auf der Client-Seite entschieden wurde?
Beachten Sie, dass ich dafür nicht speziell mit HTTP-Headern verbunden bin, daher ist jede andere Methode, die ich nicht kennen würde, willkommen!
Sie können einen URL-Parameter hinzufügen, der basierend auf der Zeit den Cache für genau eine Anfrage bereinigt.
%Vor%Tags und Links javascript ajax http browser-cache cache-control