以下是 HTTP 1.1 头部字段的翻译:
If-None-Match: *
我理解使用强 ETag、弱 ETag,甚至一系列 ETag 的情况,但不理解在使用星号 (*) 时的用途。
编辑:最好能提供一些伪代码(PHP 代码也可以),展示如何/什么时候回答"If-None-Match: *"。
以下是 HTTP 1.1 头部字段的翻译:
If-None-Match: *
我理解使用强 ETag、弱 ETag,甚至一系列 ETag 的情况,但不理解在使用星号 (*) 时的用途。
编辑:最好能提供一些伪代码(PHP 代码也可以),展示如何/什么时候回答"If-None-Match: *"。
If-None-Match: *
If-Modified-Since: <yesterday date>
今天已经修改了页面。
首先,我们看一下 *
告诉我们:"如果资源存在且满足条件 (2),则返回 304"。好的,资源存在,但是条件 (2) 规定:"仅当日期晚于当前日期时才返回 304"。因此,这个条件没有得到满足,页面将会完全传送。
如果我们没有收到 If-Modified-Since
,响应将会是 304。
如果在请求时该资源不存在,我们将返回适当的代码(就像没有 If-None-Match
一样)。
只有在 GET 和 HEAD 请求的响应中才应该返回 304,并且所有与缓存相关的响应头都必须存在。对于所有其他类型的请求,您的服务器需要回答 412(前提条件失败)。
希望它能有所帮助 ;)
If-Modified-Since
。所以有两种方式。 - St.WolandIf-None-Match
和If-Modified-Since
请求头是没有意义的(因为与ETag
关联的Last-Modified
日期永远不会改变)。除了一种情况,同时指定两者是有意义的:当同时存在If-None-Match
和If-Modified-Since
时,除非服务器不支持If-None-Match
,否则将忽略If-Modified-Since
。 - Steven Liekens