【发布时间】:2013-06-12 09:00:38
【问题描述】:
这是一个简单的问题,可能对其他人也有帮助。
我有一个休息服务,它将为其端点上的每个 GET 查询返回一个正确的 ETAG 标头。
现在,我还需要创建一个 curl http 客户端来查询这些端点并使用 etag。
据我了解,在使用 curl 发出第一个请求后,我需要保存返回的 etag 以供以后使用,这样就可以
所有后续请求(直到 etag 在服务器上失效)我使用缓存版本,因为服务器将返回 304 标头和空响应。
它是否正确?
记住这个 http 客户端将分布在许多服务器上,并且 curl 本身无法保存返回的
内容我假设我需要使用 sqlite 或 fs 缓存之类的东西自己保存它。
它是否正确?
基本上我想的工作流程是这样的:
1. 向服务器端点发出第一个 curl 请求 (GET)
2. 服务器返回带有正确 etag 和内容的 http 代码 200
3. 使用我从服务器获得的此响应,使用 sqlite 或 fs 保存内容和 etag
4. 下次调用同一个端点,发送一个带有 etag 值的 If-None-Match 头
5. 服务器验证 If-None-Match 标头
5.a - 内容没有被改变,一个 304 头被发回并且没有响应。基于此,我从 sqlite 或 fs 加载本地缓存的内容。
5.b - 内容已更改,发回 200 标头以及新的 etag。基于此,我保存新的 etag 和内容以供下次使用。
6.循环重复
这对吗?
【问题讨论】:
标签: php curl http-headers http-caching