# If-None-Match #
只有在If-None-Match的字段值与ETag值不一致时,可处理该请求。与 If-Match首部字段的作用相反。
=首部字段If-None-Match属于附带条件之一。它和首部字段 If-Match作用相反。
用于指定If-None-Match字段值的实体标记(ETag)值与请求资源的ETag不一致时,它就告知服务器处理该请求。
在GET或HEAD方法中使用首部字段 If-None-Match 可获取最新的资源。
因此,这与使用首部字段 If-Modified-Since 时有些类似。
# If-Range #
首部字段If-Range属于附带条件之一。
它告知服务器若指定的 If-Range字段值(ETag值或者时间)和请求资源的ETag值或时间相一致时,则作为范围请求处理。
反之,则返回全体资源。
如果不使用首部字段if-Range则需要进行两次处理。
下面我们思考一下不使用首部字段 If-Range 发送请求的情况。服务器端的资源如果更新,
那客户端持有资源中的一部分也会随之无效,当然,范围请求作为前提是无效的。
这时,服务器会暂且以状态码 412Precondition Failed 作为响应返回,其目的是催促客户端再次发送请求。
这样一来的话,与使用首部字段If-Range 比起来,就需要花费两倍的功夫。
# If-Unmodified-Since #
首部字段 If-Unmodified-Since和首部字段 If-Modified-Since 的作用相反。
它的作用的是告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,
才能处理请求。如果在指定日期时间后发生了更新,则以状态码 412 Precondition Failed 作为响应返回。
ex:If-Unmodified-Since: Thu, 03 Jul 2012 00:00:00 GMT