Ant*_*lad 5 caching http go http-headers
我最近一直在 Go 中缓存 http 响应,我正在尝试找出生成正确 ETag 的最有效方法。
现在我有以下可用数据:
经过一番思考后,我得出的结论是,如果我将模板的名称和生成的动态数据结合起来,理论上应该会以最少的开销创建一个合法的唯一 ETag,但我不知道如果我开始想要返回 30kb 的 html 数据库结果。
我使用 Go 的 stdlib 中的 crc32 例程根据传递给它的数据生成 ETag。
有没有更好的方法来生成 ETag,甚至缓存动态数据?我不能只监视文件的最后修改时间,因为数据可以在文件不更改的情况下更改。
一般来说,您希望使用计算成本低廉的东西作为 ETag。这样做的原因是,如果客户端发送条件请求(例如通过If-None-MatchHTTP 请求标头),您可以决定是否适合发送响应,304 Not Modified而不必对页面进行所有处理。
例如,如果您有某种页面内容的修订标识符,那么这可能是一个很好的 ETag。
如果您需要完成渲染页面所需的所有工作以生成 ETag,那么您也可以只使用渲染页面内容的哈希值,或者根本不使用 ETag。
| 归档时间: |
|
| 查看次数: |
3110 次 |
| 最近记录: |