如何根据返回的etag使用curl缓存api响应?

时间:2013-06-12 09:00:39

标签: php curl http-headers http-caching

这是一个可能对其他人有帮助的快速问题 我有一个休息服务,它将为其端点上的每个GET查询返回一个正确的ETAG标头 现在,我还需要创建一个curl http客户端来查询这些端点并使用etags 根据我的理解,在使用curl发出第一个请求之后,我需要保存返回的etag供以后使用,以便继续使用 所有后续请求(直到etag在服务器上无效)我使用缓存版本,因为服务器将返回304标题和空响应。
它是否正确?

请记住,这个http客户端将分布在许多服务器上并且curl本身无法保存返回的内容 内容我假设我需要使用像sqlite或fs cache这样的东西来保存它 它是否正确?

基本上我正在考虑的工作流程如下:
1.将第一个卷曲请求(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.循环重复

这是对的吗?

1 个答案:

答案 0 :(得分:0)

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

选择它,如果有的话,它可能对您有用,并且您很开心。