根据资源的时间戳生成ETag的最佳方法是什么

时间:2016-08-18 09:18:51

标签: performance api http caching etag

因此,在我的一个项目中,我必须创建一个http缓存来处理对服务器的多个API调用。我读到了这个可以与条件GET一起使用的ETag头来最小化服务器负载并实现缓存。但是我生成E-Tag时遇到问题。我可以使用资源的LAST_UPDATED_TIMESTAMP作为ETag或哈希它使用某种散列算法,如MD5。但是最好的方法是什么? 使用原始时间戳作为Etag ??

是否有任何缺点

任何支持性的答案都非常感谢..提前致谢....干杯!!

1 个答案:

答案 0 :(得分:2)

如果您的时间戳具有足够的精度,以便您可以保证在资源更改时它会随时更改,那么您可以使用时间戳的编码(标题值需要为ascii)。

但请记住,ETag可能不会为您节省太多。它只是一个缓存重新验证标题,所以你仍然可以从客户端获得尽可能多的请求,只有一些是有条件的,然后你可以避免在ETag没有改变的情况下发回有效载荷,但是你仍然需要做一些工作把它想出来(可能是一堆较少的工作,所以值得)。

事实上,几个版本的IIS使用文件时间戳来生成Etag。我们在构建WinGate的缓存模块时绊倒了,当一堆具有相同时间映射的文件最终使用相同的Etag时,我们了解到Etag仅在请求URI的上下文中有效。