nginx官网上说默认是开启etag的。
Syntax: etag on | off;
Default:
etag on;
Context: http, server, location
This directive appeared in version 1.3.3.
为什么在同一站点的不同页面,有些请求有会etag,某些则不会呢?
nginx官网上说默认是开启etag的。
Syntax: etag on | off;
Default:
etag on;
Context: http, server, location
This directive appeared in version 1.3.3.
为什么在同一站点的不同页面,有些请求有会etag,某些则不会呢?
我也遇到这个问题了,测试环境没有,生产环境有,
看了下测试环境版本是1.4.6 生产环境是1.16 都开启了gzip 猜猜和版本有关系
看了这篇文章,说的还比较符合
https://www.cnblogs.com/golov...
15 回答8.4k 阅读
3 回答2.3k 阅读✓ 已解决
2 回答2.4k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
1 回答937 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
对于nginx,etag的格式是 unixtime-filesize
unixtime: 文件的修改时间的unix time的十六进制
filesize: 文件大小(字节)的十六进制
如果返回的内容是压缩过的,那采用weak etag,算法是一样的。
所以,要产生etag,必须有两个条件:
文件时间
文件大小
对于反代(包括proxy_pass, uwsgi_pass, fast-cgi等),不会创建etag,头部都是由upstream创建
一般来讲,只有存在磁盘上的文件,由nginx直接读取,才会产生etag
第一个请求,是一个静态的首页
etag是59697ad6-210
59697ad6转换成十进制是1500084950,时间是2017/7/15 10:15:50 +8,这是你web server上文件的修改时间
210转换成十进制是528,就是文件的大小
第二个请求是php,通常是fast-cgi,时间和大小都无法预先确定,所以没有etag