Frage

Wenn ich eine 304-Antwort senden. Wie wird sich der Browser andere Header interpretieren, die ich zusammen mit dem 304 senden?

z.

header("HTTP/1.1 304 Not Modified");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");

Wird dies sicherstellen, dass nicht ein anderen bedingten GET-Request (noch irgendeine Anfrage) bis $ offset Zeit "run out"?

Bitte senden Sie den Browser

Auch was ist mit anderen Header?

Soll ich Header wie diese zusammen mit den 304 senden:

header('Content-Type: text/html');

Muss ich an:

header("Last-Modified:" . $modified);
header('Etag: ' . $etag);

Um sicherzustellen, dass der Browser eine bedingte GET-Anforderung das nächste Mal sendet der Offset $ hat „run out“ oder ist es einfach speichern die alte Last Modified und Etag Werte?

Gibt es andere Dinge, die ich sollte über sich bewusst sein, wenn eine 304-Antwort-Header zu senden?

War es hilfreich?

Lösung

Das Blog-Post mich viel, um dazu beigetragen, die „bedingten get“ Tier zu zähmen .

Ein interessanter Auszug (die im Widerspruch zum Teil Ben Antwort) heißt es:

  

Wenn eine normale Reaktion einen ETag Header enthalten habe, muss dieser Header auch in der 304-Antwort aufgenommen werden.

     

Cache-Headern (laufen, Cache-Control und / oder zu variieren), wenn ihre Werte von den in einer früheren Antwort gesendet abweichen.

Dies ist in völliger Übereinstimmung mit dem RFC 2616 sec 10.3.5 .


Unter einer 200 Anfrage ...

HTTP/1.1 200 OK
Server: nginx/0.8.52
Date: Thu, 18 Nov 2010 16:04:38 GMT
Content-Type: image/png
Last-Modified: Thu, 15 Oct 2009 02:04:11 GMT
Expires: Thu, 31 Dec 2010 02:04:11 GMT
Cache-Control: max-age=315360000
Accept-Ranges: bytes
Content-Length: 6394
Via: 1.1 proxyIR.my.corporate.proxy.name:8080 (IronPort-WSA/6.3.3-015)
Connection: keep-alive
Proxy-Connection: keep-alive
X-Junk: xxxxxxxxxxxxxxxx

... Und sein optimales gültiges 304-Pendant.

HTTP/1.1 304 Not Modified
Server: nginx/0.8.52
Date: Thu, 18 Nov 2010 16:10:35 GMT
Expires: Thu, 31 Dec 2011 16:10:35 GMT
Cache-Control: max-age=315360000
Via: 1.1 proxyIR.my.corporate.proxy.name:8080 (IronPort-WSA/6.3.3-015)
Connection: keep-alive
Proxy-Connection: keep-alive
X-Junk: xxxxxxxxxxx
Hinweis

, dass der Expires Header ist höchstens Current Date + One Year per RFC-2616 14.21 .

Andere Tipps

Der Content-Type Header gilt nur für Antworten, die einen Körper enthalten. A-304-Antwort tut nicht enthält einen Körper, so dass die Header nicht gilt. In ähnlicher Weise wollen Sie nicht Last-Modified oder ETag senden, weil eine 304-Antwort bedeutet, dass das Dokument nicht verändert hat (und so weder die Werte dieser beiden Header).

Ein Beispiel finden Sie unter Blog-Beitrag von Anne van Kesteren Prüfung Wordpress http_modified Funktion. Beachten Sie, dass es gibt entweder Last-Modified und ETag oder eine 304-Antwort.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top