Ben bir 304 yanıtı ile birlikte göndermek ne başlıkları istiyorsun?

2 Cevap php

Ben bir 304 yanıtı göndermek. Nasıl bir tarayıcı 304 ile birlikte göndermek diğer başlıklarını yorumlayacaktır?

Örneğin

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

$ Offset zaman "tükendi" kadar bu tarayıcı başka koşullu GET isteği (veya herhangi bir isteği) göndermez emin olacaktır?

Ayrıca, ne diğer başlıklarıyla ilgili?

Ben birlikte 304 ile bunun gibi başlıkları göndermek gerekir:

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

Ben göndermek zorunda mı:

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

Emin tarayıcı $ offset dahaki sefere "tükendi" bir şartlı GET isteği gönderir ya da sadece eski Modifiye Son ve Etag değerleri tasarruf mu yapmak?

Ben bir 304 yanıt başlığını gönderirken hakkında bilmeniz gereken başka şeyler var mı?

2 Cevap

Content-Type başlığı sadece bir vücut içeren tepkiler için de geçerlidir. Bu başlık geçerli değildir böylece bir 304 yanıtı not, bir vücut içermiyor. 304 cevap belge değişmediği anlamına gelir (ve bu yüzden bu iki başlığa değerleri ne) çünkü Benzer şekilde, Last-Modified veya ETag göndermek istemiyorum.

Bir örnek için, this blog post by Anne van Kesteren WordPress 'http_modified işlevi incelenmesi bkz. O either Last-Modified ve ETag or 304 yanıt verdiğini unutmayın.

Bu blog post "koşullu olsun" hayvan evcilleştirmek için bana çok yardımcı oldu.

(Partialy Ben'in cevabı çelişmektedir) ilginç bir alıntı şöyle der:

Normal bir tepki bir ETag başlığını dahil olurdu, bu başlık aynı zamanda 304 yanıt dahil edilmelidir.

Önbellek başlıkları (Cache-Control Bitiş ve / veya Vary), kendi değerleri bir önceki cevaben gönderilen farklılık olabilir eğer.

This is in complete accordance with the RFC 2616 sec 10.3.5.


200 isteği altında ...

    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 2037 23:55:55 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

... Ve onun en geçerli 304 karşılığıdır.

    HTTP/1.1 304 Not Modified
    Server: nginx/0.8.52
    Date: Thu, 18 Nov 2010 16:10:35 GMT
    Expires: Thu, 31 Dec 2037 23:55:55 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