我瞭解使用etags進行樂觀併發控制(例如,在REST風格的體系結構中),並且我已經讀過etags對於同一資源的不同表示應該是不同的。這是爲什麼?爲什麼不同的Etags表示同一資源的不同表示?
最終我們不知道資源是否發生了變化,因此我們可以處理併發修改?我很難想象資源的表示會在資源本身發生變化的情況下發生變化,所以我顯然錯過了一些基本的理解。
我瞭解使用etags進行樂觀併發控制(例如,在REST風格的體系結構中),並且我已經讀過etags對於同一資源的不同表示應該是不同的。這是爲什麼?爲什麼不同的Etags表示同一資源的不同表示?
最終我們不知道資源是否發生了變化,因此我們可以處理併發修改?我很難想象資源的表示會在資源本身發生變化的情況下發生變化,所以我顯然錯過了一些基本的理解。
好問題,我認爲這是一個辯論的問題。
我認爲大多數人會說ETag不僅表示資源版本,還表示內容類型。
請查看以下鏈接有意義的緩存響應編碼和ETag:http://www.gossamer-threads.com/lists/apache/dev/339577
當您列出事實或當您閱讀HTTPbis規範的HTTP &時,這不是一個爭議問題。
ETag是緩存和併發控制的一種手段。 012gt弱ETags只是窮人緩存的手段。在緩存(GET)方面--uri + content-type + etag可以幫助您節省帶寬,因爲不會對有效負載做出響應,只需要304狀態碼。
就併發控制(POST; PUT; PATCH)而言 - 根據URI +內容類型+位精確響應負載計算ETag是浮躁的。爲什麼?
條件要求應與語義相似的處理,以「鑑於我對世界的看法仍然是相同的,則執行該請求。否則失敗」。我對世界的看法是由過去的迴應(URI +標頭+有效載荷)構成的。