我了解使用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 +标头+有效载荷)构成的。