# 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