ETag

最後更新: 2019-04-18

介紹

 

ETag 的功用是如果資源的內容沒有發生改變, Web服務器就不需要發送一個完整的響應

 


要點

  • ETag 的比較只對同一個URL有意義
  • ETag在HTTP頭字段中的使用是可選的
  • 沒有明確指定生成ETag值的方法 (版本號, CRC, MD5)
  • 客戶端可以決定是否緩存這個資源和它的ETag。

強/弱 ETag

  • "123456789"          # 強ETag驗證符
  • W/"123456789"     # 弱ETag驗證符

強 ETag 要求兩個資源內容的每個字節需完全相同

運作

如果客戶端再次訪問相同的URL, 將會發送一個包含已保存的ETag 的 "If-None-Match" header

客戶端請求之後, 服務器可能會比較客戶端的ETag和當前版本資源的ETag,

如果 ETag 值匹配, 那服務器便會發送回一個極短的響應(304)

myurl=https://datahunter.org/themes/mytheme/logo.png

curl -I $myurl

HTTP/1.1 200 OK
...
ETag: "639f-15fc-4a0f77094aa40"

curl -I -H 'If-None-Match: "639f-15fc-4a0f77094aa40"' $myurl

HTTP/1.1 304 Not Modified