[ADP-144] Vary
指導
- API 設計不應(SHOULD)使用 Vary; 應(SHOULD)使用 ETag 作為替代。參見 ADP-128: ETag。
- 如果必須使用 Vary,應謹慎和節制地使用。
- 使用 Vary 時,必須確保所有列出的標頭實際上都用於內容協商過程。
理由
雖然 Vary 對內容協商有用,但它常常導致緩存效率低下和複雜性。使用 ETag 代替提供了一種更直接和高效的緩存機制。
示例
使用 ETag 代替 Vary
http
HTTP/1.1 200 OK
Content-Type: application/json
ETag: "33a64df551425fcc55e4d42a148795d9f25f89d4"
必須使用 Vary 時
http
HTTP/1.1 200 OK
Content-Type: application/json
Vary: Accept-Language
考慮因素
- 使用 Vary 可能導致緩存命中率降低,特別是對於 CDN 和代理緩存。
- ETag 提供了更精確的緩存機制,而不會帶來與 Vary 相關的複雜性。
- 如果需要內容協商,考慮不過度依賴 Vary 的替代設計。