If-None-Match
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
If-None-Match æ¯ä¸ä¸ªæ¡ä»¶å¼è¯·æ±é¦é¨ãå¯¹äº GETGET å HEAD è¯·æ±æ¹æ³æ¥è¯´ï¼å½ä¸ä»
彿å¡å¨ä¸æ²¡æä»»ä½èµæºç ETag 屿§å¼ä¸è¿ä¸ªé¦é¨ä¸ååºçç¸å¹é
çæ¶åï¼æå¡å¨ç«¯æä¼è¿åæè¯·æ±çèµæºï¼ååºç 为 200 ã对äºå
¶ä»æ¹æ³æ¥è¯´ï¼å½ä¸ä»
彿ç»ç¡®è®¤æ²¡æå·²åå¨çèµæºç ETag 屿§å¼ä¸è¿ä¸ªé¦é¨ä¸æååºçç¸å¹é
çæ¶åï¼æä¼å¯¹è¯·æ±è¿è¡ç¸åºçå¤çã
å¯¹äº GET å HEAD æ¹æ³æ¥è¯´ï¼å½éªè¯å¤±è´¥çæ¶åï¼æå¡å¨ç«¯å¿
é¡»è¿åååºç 304ï¼Not Modifiedï¼æªæ¹åï¼ã对äºè½å¤å¼åæå¡å¨ç¶ææ¹åçæ¹æ³ï¼åè¿å 412ï¼Precondition Failedï¼åç½®æ¡ä»¶å¤±è´¥ï¼ãéè¦æ³¨æçæ¯ï¼æå¡å¨ç«¯å¨çæç¶æç 为 304 çååºçæ¶åï¼å¿
须忶çæä»¥ä¸ä¼åå¨äºå¯¹åºç 200 ååºä¸çé¦é¨ï¼Cache-ControlãContent-LocationãDateãETagãExpires å Varyã
ETag 屿§ä¹é´çæ¯è¾éç¨çæ¯å¼±æ¯è¾ç®æ³ï¼å³ä¸¤ä¸ªæä»¶é¤äºæ¯ä¸ªåèé½ç¸åå¤ï¼å
容ä¸è´ä¹å¯ä»¥è®¤ä¸ºæ¯ç¸åçãä¾å¦ï¼å¦æä¸¤ä¸ªé¡µé¢ä»
ä»
å¨é¡µèççææ¶é´ææä¸åï¼å°±å¯ä»¥è®¤ä¸ºäºè
æ¯ç¸åçã
å½ä¸ If-Modified-Since ä¸å使ç¨çæ¶åï¼If-None-Match ä¼å
级æ´é«ï¼å妿å¡å¨æ¯æçè¯ï¼ã
以䏿¯ä¸¤ä¸ªå¸¸è§çåºç¨åºæ¯ï¼
- éç¨
GETæHEADæ¹æ³ï¼æ¥æ´æ°æ¥æç¹å®çETag屿§å¼çç¼åã - éç¨å
¶ä»æ¹æ³ï¼å°¤å
¶æ¯
PUTï¼å°If-None-Matchused çå¼è®¾ç½®ä¸º * ï¼ç¨æ¥çæäºå å¹¶ä¸ç¥éæ¯å¦åå¨çæä»¶ï¼å¯ä»¥ç¡®ä¿å å并没æè¿è¡è¿ç±»ä¼¼çä¸ä¼ æä½ï¼é²æ¢ä¹åæä½æ°æ®ç丢失ãè¿ä¸ªé®é¢å±äºæ´æ°ä¸¢å¤±é®é¢çä¸ç§ã
| Header type | Request header |
|---|---|
| Forbidden request header | no |
è¯æ³
If-None-Match: <etag_value> If-None-Match: <etag_value>, <etag_value>, ⦠If-None-Match: *
æä»¤
- <etag_value>
-
å¯ä¸å°è¡¨ç¤ºæè¯·æ±èµæºçå®ä½æ ç¾ã形弿¯éç¨åå¼å·æ¬èµ·æ¥çç± ASCII å符串ï¼å¦"675af34563dc-tr34"ï¼ï¼æå¯è½å å«ä¸ä¸ª W/ åç¼ï¼æ¥æç¤ºåºè¯¥éç¨å¼±æ¯è¾ç®æ³ï¼è¿ä¸ªæ¯ç»è添足ï¼å 为 If-None-Match ç¨ä¸ä» ç¨è¿ä¸ç®æ³ï¼ã
*-
æå·æ¯ä¸ä¸ªç¹æ®å¼ï¼å¯ä»¥ä»£è¡¨ä»»æèµæºãå®åªç¨å¨è¿è¡èµæºä¸ä¼ æ¶ï¼é常æ¯éç¨
PUTæ¹æ³ï¼æ¥æ£æµæ¥æç¸åè¯å« ID çèµæºæ¯å¦å·²ç»ä¸ä¼ è¿äºã
示ä¾
If-None-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d" If-None-Match: W/"67ab43", "54ed21", "7892dd" If-None-Match: *
è§è
| è§è |
|---|
| HTTP Semantics > # field.if-none-match > |
æµè§å¨å ¼å®¹æ§
åè§
ETagIf-Unmodified-SinceIf-Modified-SinceIf-Match304Not Modified412Precondition Failed