[ADP-369] HTTP 快取: ETag
概述
ETag
標頭用於資源版本控制和快取驗證。有關 ETag 的詳細資訊,請參閱 ADP-128: ETag。
流程
- 客戶端發起第一個 GET 請求,不帶任何快取相關標頭。
- 伺服器返回數據,並計算出
ETag
。 - 客戶端再次請求相同的 GET,帶上
If-None-Match
。 - 伺服器檢查
If-None-Match
請求與最新數據的ETag
。- 如果不匹配,返回 200
- 如果匹配,返回 304
指導
- 可以(MAY)提供 ETag 來快取回應
實現細節
- ETag 有兩種類型:
弱 ETag
和強 ETag
。 - 在
express
(nodejs web 伺服器框架)中,默認會生成弱 ETag;可以通過更改配置生成強 ETag - 在
gin
(golang web 伺服器框架)中,可以通過中間件生成 ETag。