【问题标题】:How to cache api response using curl, based on returned etag?如何根据返回的 etag 使用 curl 缓存 api 响应?
【发布时间】: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


    【解决方案1】:

    我会说是的,基于最近的事件和自己对这个问题的思考。

    去做吧,如果有的话,它可能对你有用,你会很开心。

    【讨论】:

      猜你喜欢
      • 2013-12-24
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      • 2017-03-23
      • 2017-10-08
      • 1970-01-01
      • 2015-10-27
      • 2020-08-19
      相关资源
      最近更新 更多