这是一个简短的问题,也可能对其他人有帮助。
我有一个休息服务,它将为其端点上的每个 GET 查询返回正确的 ETAG 标头。
现在,我还需要创建一个curl http 客户端来查询这些端点并使用etag。
根据我的理解,在使用curl发出第一个请求后,我需要保存返回的etag以供以后使用,以便
所有后续请求(直到 etag 在服务器上无效)我都使用缓存版本,因为服务器将返回 304 标头和空响应。
它是否正确?
请记住,这个 http 客户端将分布在许多服务器上,并且 curl 本身无法保存返回的
内容我假设我需要使用 sqlite 或 fs 缓存之类的东西自己保存它。
它是否正确?
基本上我想的工作流程是这样的:
1.向服务器端点发出第一个curl请求(GET)
2.服务器返回http代码200以及正确的etag和内容
3.使用我从服务器获得的响应,使用 sqlite 或 fs 保存内容和 etag
4. 下次调用同一端点时,发送带有 etag 值的 If-None-Match 标头
5. 服务器验证 If-None-Match 标头
5.a - 内容未更改,发回 304 标头且无响应。基于此,我从 sqlite 或 fs 加载本地缓存内容。
5.b - 内容已更改,发回 200 标头以及新的 etag。基于此,我保存新的 etag 和内容以供下次使用。
6. 循环重复
它是否正确?
根据最近发生的事件和我自己对这个问题的思考,我会说是的。
去做吧,如果有的话,它可能对你有用,你会很高兴。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)