当文件更改时,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 留言