我目前正在构建一个PHP脚本,在需要时将回复HTTP“304 Not Modified”。
(见question #2086712到目前为止我做了什么)。
目前我回答以下问题:
但我发现另外3个标题可以触发“条件GET”(参见http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.3):
最后2对我的缓存系统来说似乎是不相干的(它们似乎在恢复“大”下载时使用)但我还没有发现“If-Match”是否可以在我的系统中使用。
“if-Match”是否在代理或Web浏览器中用于“常规”页面内容? “If-Match”如何与“If-None-Match”不同?
我应该支持那些3还是只支持其中的一些?欢迎任何帮助!
答案 0 :(得分:37)
如果出现以下情况,服务器必须返回412(Precondition Failed)响应:
If-Match应忽略,如果:
结论 if-match :
如果出现以下情况,服务器必须返回412(Precondition Failed)响应:
If-Unmodified-Since应忽略,如果
If-Unmodified-Since in RFC2616
非正式地,它的意思是'如果实体没有变化,请将我遗漏的部分发给我;否则,请将整个新实体发送给我
前提条件:
If-Range
标题应该只能与Range
标题一起使用,如果请求 必须会被忽略>不包括 Range
标题,或者服务器 不支持 子范围操作。If-Range
标头与实体的当前实体标签匹配,服务器应该提供206(部分内容)响应。否则,服务器应该使用200(OK)响应返回整个实体。
具有以下标题组合会导致未定义的结果:
这些规则已从以下规则中分解出来(可在RFC2616中找到):