gzip_vary on 和 off 的具体含义,核心是理解这个配置如何影响 HTTP 响应头的 Vary 字段,以及它对缓存系统的作用,我用通俗的语言给你讲明白:
Vary 响应头
Vary 是 HTTP 响应头的一个字段,作用是告诉缓存服务器(CDN、代理服务器、浏览器缓存):这个响应的内容会根据哪些请求头的不同而变化。
gzip_vary on/off 的具体含义
gzip_vary on(推荐开启)
Vary: Accept-Encoding。
Accept-Encoding 不同而变化 —— 比如浏览器传 Accept-Encoding: gzip 时我返回压缩后的内容,不传时返回原始内容,这两种内容是不一样的,缓存时要分开存!”
gzip_vary off(不推荐)
Vary: Accept-Encoding。
gzip_vary on?
| 配置 |
响应头是否包含 Vary: Accept-Encoding
|
缓存系统行为 |
|---|---|---|
gzip_vary on
|
是 | 分开缓存压缩 / 未压缩版本,避免乱码 |
gzip_vary off
|
否 | 可能混存版本,老旧浏览器会显示乱码 |
gzip_vary on:强制 Nginx 在响应头添加 Vary: Accept-Encoding,告诉缓存系统 “压缩 / 未压缩资源要分开缓存”,是保障缓存正确性的关键配置;
gzip_vary off:不添加该响应头,可能导致缓存系统返回错误的资源版本(如给不支持 gzip 的浏览器返回压缩文件),引发乱码问题;
gzip_vary 就必须设为 on,无任何负面作用。