Http 响应头中的 ETag 值是如何生成的

频道:行业资讯 日期: 浏览:497
?关于 etag 的生成需要满足几个条件,至少是宽松满足

当文件更改时,etag 值必须改变。

尽量便于计算,不会特别耗 CPU。这样子利用摘要算法生成 (MD5, SHA128, SHA256) 需要慎重考虑,因为他们是 CPU 密集型运算

必须横向扩展,分布式部署时多个服务器节点上生成的 etag 值保持一致。这样子 inode 就排除了

以上几个条件是理论上的成立条件,那在真正实践中,应该如何处理?

我们来看一下 nginx 中是如何做的

nginx 中 ETag 的生成

我翻阅了 nginx 的源代码,并翻译成伪代码如下:由 last_modified 与 content_length 拼接而成

复制

etag = header.last_modified + header.content_lenth

1.

可见源码位置,并在以下贴出: ngx_http_core_modules.c

复制

etag->value.len = ngx_sprintf(etag->value.data, "\"%xT-%xO\""""

0 留言

评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。