我想要与 304 响应一起发送哪些标头?
当我发送 304 响应时。 浏览器将如何解释我与 304 一起发送的其他标头?
例如,
header("HTTP/1.1 304 Not Modified");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
这是否可以确保浏览器在 $offset 时间“用完”之前不会发送另一个条件 GET 请求(也不会发送任何请求)?
另外,其他标题呢?
我是否应该将这样的标头与 304: 一起发送:
header('Content-Type: text/html');
我是否必须发送:
header("Last-Modified:" . $modified);
header('Etag: ' . $etag);
以确保浏览器在下次 $offset“用完”时发送有条件的 GET 请求,或者只是保存旧的 Last Modified 和 Etag 值?
发送 304 响应标头时还需要注意其他事项吗?
When I send a 304 response. How will the browser interpret other headers which I send together with the 304?
E.g.
header("HTTP/1.1 304 Not Modified");
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT");
Will this make sure the browser will not send another conditional GET request (nor any request) until $offset time has "run out"?
Also, what about other headers?
Should I send headers like this together with the 304:
header('Content-Type: text/html');
Do I have to send:
header("Last-Modified:" . $modified);
header('Etag: ' . $etag);
To make sure the browser sends a conditional GET request the next time the $offset has "run out" or does it simply save the old Last Modified and Etag values?
Are there other things I should be aware about when sending a 304 response header?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这篇博客文章帮助我驯服了“条件获取”野兽。
一个有趣的摘录(与本的回答部分矛盾)指出:
这完全符合 RFC 2616 sec 10.3。 5.
低于 200 请求……
及其最佳有效的 304 对应项。
请注意,根据RFC-2616 14.21。
This blog post helped me a lot in order to tame the "conditional get" beast.
An interesting excerpt (which partially contradicts Ben's answer) states that:
This is in complete accordance with the RFC 2616 sec 10.3.5.
Below a 200 request...
...And its optimal valid 304 counterpart.
Notice that the
Expires
header is at mostCurrent Date + One Year
as per RFC-2616 14.21.Content-Type
标头仅适用于包含正文的响应。 304 响应不包含正文,因此标头不适用。 同样,您不想发送Last-Modified
或ETag
因为 304 响应意味着文档没有更改(因此这两个值都没有更改)标题)。有关示例,请参阅Anne van Kesteren 撰写的这篇博客文章,检查WordPress'
http_modified
函数。 请注意,它返回Last-Modified
和ETag
或 304 响应。The
Content-Type
header only applies to responses which contain a body. A 304 response does not contain a body, so that header does not apply. Similarly, you don't want to sendLast-Modified
orETag
because a 304 response means that the document hasn't changed (and so neither have the values of those two headers).For an example, see this blog post by Anne van Kesteren examining WordPress'
http_modified
function. Note that it returns eitherLast-Modified
andETag
or a 304 response.