什么是强etag

zer*_*ing 5 http odata

在 OData 世界中,对于更改数据,有一个乐观并发控制,它将标记在 http 标头 etag 上。

etag值,有两个选项可用,强模式和弱模式。

我的问题是,这两个选项有什么区别?

Yor*_*ram 5

弱实体标签由不透明的引号字符串组成,前缀为弱指示符。

  entity-tag = [ weak ] opaque-tag
  weak       = "W/"
  opaque-tag = quoted-string
Run Code Online (Sandbox Code Playgroud)

实体标签用于比较来自同一请求资源的两个或多个实体。

仅当资源的两个实体相同时,“强实体标签”才可以由它们共享。

由“W/”前缀指示的“弱实体标签”可以由资源的两个实体共享,前提是这两个实体在语义上等效并且可以在语义上没有重大变化的情况下相互替换。弱实体标签只能用于弱比较。

下面的示例显示了一组实体标签对的结果以及弱比较函数和强比较函数的结果:

ETag 1  ETag 2  Strong Comparison   Weak Comparison
---------------------------------------------------
W/"1"   W/"1"   no match            match
W/"1"   W/"2"   no match            no match
W/"1"   "1"     no match            match
"1"     "1"     match               match
Run Code Online (Sandbox Code Playgroud)