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