【发布时间】:2019-11-03 18:59:37
【问题描述】:
示例场景
假设/some-view 有一个资源,它显示基于数据库查询的列表,例如
- 项目 1
- 项目 2
- 项目 3
客户端 X 向/some-view 发出第一个请求,服务器处理响应,缓存它,生成一个 etag,然后用 200 发回。
现在已经过了一段时间,/some-view 的列表包含另一个项目
- 项目 1
- 项目 2
- 项目 3
- 项目 4
假设客户端 X 再次发送第一个请求,服务器是否会以 304 响应,直到另一个请求,例如客户端 Y,强制生成新的 etag 值,或者服务器是否实际处理响应并将其与当前 etag 进行比较以确定它是否仍然有效?也许不同的网络服务器处理方式不同?
【问题讨论】:
-
如何生成 etags 完全取决于网络服务器/应用程序。从 HTTP RFC 和客户端的角度来看 - 它只是一个任意字符串。