我最近在Go中缓存HTTP响应一直在鬼混,我试图找出生成正确的ETag的最有效方法。现在,我有以下可用数据:我曾经渲染模板时要渲染的模板的名称。动态数据将传递到json响应的模板或响应中。整个响应主体。身体的长度。我可能缺少的东西?经过一番思考,我得出的结论是,如果我将模板的名称和所生成的动态数据结合在一起,则理论上应该以最少的开销创建一个合法的唯一ETag,但是我不知道如果我开始想返回价值30kb的html数据库结果。我正在使用Go的stdlib中的crc32例程从传递给它的数据生成ETag。有没有更好的方法来生成ETag,甚至缓存动态数据?我不能只监视文件的最后修改时间,因为数据可以更改而无需更改文件。
2 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
通常,您希望使用便宜的东西作为ETag进行计算。这样做的原因是,如果客户端发送了条件请求(例如,通过If-None-Match
HTTP请求标头),则可以确定发送304 Not Modified
响应是否合适,而不必对页面进行所有处理。
例如,如果您具有页面内容的某种修订标识符,那么这可能会成为一个不错的ETag。
如果您需要完成渲染页面以生成ETag所需的所有工作,那么您也可以只使用渲染页面内容的哈希值,或者根本不使用ETag。
- 2 回答
- 0 关注
- 215 浏览
添加回答
举报
0/150
提交
取消