我一直在为Go缓存http响应而烦恼,我正试图找出最有效的方法来生成适当的ETag。
现在我有以下数据:
经过一番思考后,我得出的结论是,如果我将模板的名称与生成的动态数据结合起来,理论上应该创造一个合法的独特ETag,其开销最小,但我不知道这有多讨厌如果我开始想要返回30kb的html值数据库结果,我会得到。
我正在使用Go的stdlib中的crc32例程从我传入的数据中生成ETag。
有没有更好的方法来生成ETag,甚至缓存动态数据?我不能只监视文件的上次修改时间,因为数据可以在没有文件更改的情况下更改。
答案 0 :(得分:1)
通常,您希望使用便宜的东西来计算ETag。这样做的原因是,如果客户端发送条件请求(例如,通过If-None-Match
HTTP请求标头),您可以决定是否适合发送304 Not Modified
响应,而无需进行所有处理对于页面。
例如,如果您有一个页面内容的某种修订标识符,那么这可能会成为一个好的ETag。
如果您需要完成渲染页面所需的所有工作以生成ETag,那么您也可以只使用渲染页面内容的哈希值,或者根本不使用ETag。
答案 1 :(得分:0)