Wie erkennt man, wann XHR eine zwischengespeicherte Ressource zurückgibt?

8

Ich frage mich, ob es einen Weg gibt, zu erkennen, wenn eine Antwort von einem lokalen Cache zurückgegeben wird? Ist es möglich?

Die Lösung sollte allgemein sein und für unbedingte Anforderungen funktionieren. In diesem Fall lautet der Antwortcode immer 200 OK, aber XHR gibt eine zwischengespeicherte Ressource für die zweite Anforderung zurück (z. B. enthält die erste Antwort den Expires-Header, sodass vor dem Ablaufdatum kein Server nach einer neuen Ressource gefragt werden muss).

    
filip26 11.10.2012, 00:23
quelle

3 Antworten

5

Die Antwort ist Datumskopf

  • Wenn der Datumskopf vor dem Sendetermin ist, kommt eine Antwort von einem Cache.
  • Wenn der Datumskopf hinter dem Datum liegt, an dem eine Anfrage gesendet wurde, ist eine Antwort neu.

z.B.

  • aus Cache: Anfrage wurde um 11:00 Uhr gesendet, Antwortdatum ist 10:59
  • kein Cache: Die Anfrage wurde um 11:00 Uhr gesendet, das Antwortdatum ist 11:01
filip26 16.04.2013, 15:48
quelle
1

Anscheinend können wir nutzen auch die Ressourcen Timing-API , ob etwas zu bestimmen, wurde aus dem Browser-Cache bedient; wenn die transferSize 0 (und die encodedBodySize & gt; 0), dann ist das ein Cache-Treffer

.

Das scheint wie eine bessere Lösung als die anderen, so lange wie Sie mit ein Browser, der es unterstützt .

Ref: Ссылка

    
Tao 20.12.2016 18:39
quelle
0

Überprüfen Sie, ob der zurückgegebene Statuscode in der Funktion onreadystatechange auf 304 (nicht geändert) gesetzt ist. Etwas in der Art von:

%Vor%     
Kevin Bowersox 11.10.2012 00:37
quelle