我理解使用etags进行乐观并发控制(例如在RESTful风格的体系结构中),并且我已经读过etags对于同一资源的不同表示应该是不同的.这是为什么?
最终,我们是否有兴趣了解资源是否已更改,以便我们可以处理并发修改?我甚至很难想象资源的表示会在没有资源本身变化的情况下发生变化,所以我显然缺少一些基本的理解.
ano*_*non 10
好问题,我认为这是一个有争议的问题.
我认为大多数人会说ETag不仅代表资源版本,还代表内容类型.这对于根据内容类型,语言等缓存响应是有意义的.
查看以下链接:
当您列出事实或阅读 HTTP&HTTPbis 规范时,这不是一个争论的问题。
ETag 是一种缓存和并发控制的手段。弱 ETag 只是穷人缓存的一种手段。
在缓存 (GET) 方面 - uri + content-type + etag 可以帮助您节省带宽,方法是不响应有效负载,而仅响应 304 状态代码。
在并发控制(POST;PUT;PATCH)方面 - 根据 URI + 内容类型 + 位精确的响应负载计算 ETag 是浮躁的。为什么?
条件请求应使用类似于“鉴于我的世界观仍然相同,然后执行请求。否则失败”的语义来处理。我的世界观是由过去的响应(URI + 标头 + 有效负载)构成的。
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |