【发布时间】:2013-02-02 00:43:22
【问题描述】:
我最近在 Go 中一直在玩弄缓存 http 响应,我正在尝试找出最有效的方法来生成正确的 ETag。
现在我有以下可用数据:
- 当我渲染模板时要渲染的模板的名称。
- 动态数据被传递到模板或 json 响应的响应中。
- 整个响应正文。
- 身体的长度。
- 我可能遗漏了什么?
经过一番思考,我得出的结论是,如果我将模板的名称和正在生成的动态数据结合起来,理论上这应该以最少的开销创建一个合法的唯一 ETag,但我不知道这有多讨厌如果我开始想要返回 30kb 的 html 值的数据库结果,将会得到。
我正在使用 Go 的 stdlib 中的 crc32 例程从我传递给它的数据生成 ETag。
有没有更好的方法来生成 ETag,甚至缓存动态数据?我不能只监控文件的最后修改时间,因为数据可以在不改变文件的情况下改变。
【问题讨论】:
标签: http caching http-headers go