【发布时间】:2011-10-02 00:49:26
【问题描述】:
我有一个 nginx 服务器,但似乎找不到任何有关如何发送 Vary: Accept-Encoding CSS 和 JS 文件的标头的信息。有人知道这方面的信息吗?
谢谢!
【问题讨论】:
标签: nginx
我有一个 nginx 服务器,但似乎找不到任何有关如何发送 Vary: Accept-Encoding CSS 和 JS 文件的标头的信息。有人知道这方面的信息吗?
谢谢!
【问题讨论】:
标签: nginx
这是来自 nginx documentation。
gzip_vary syntax: gzip_vary on|off default: gzip_vary off context: http, server, location启用
"Vary: Accept-Encoding"的响应标头。请注意,这 标头导致 IE 4-6 由于错误而无法缓存内容(请参阅 2 )。
如果您只添加gzip_vary on;,它应该可以完成它的工作。
还要确保您有任何一个 gzip、gzip_static 或 gunzip 指令处于活动状态。
【讨论】:
在你要设置的域/子域的server {里面,添加
gzip on;
gzip_min_length 1100;
gzip_buffers 4 32k;
gzip_types text/plain application/x-javascript text/xml text/css;
gzip_vary on;
保存文件并重启nginx。
【讨论】:
简单。在 Nginx 配置中:
vim /etc/nginx/nginx.conf
在该部分的底部附近添加以下内容:
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
只需取消注释gzip_vary on;参数并重新启动或重新加载nginx服务:
service nginx restart
这应该可以解决问题。如果您运行的是旧版本的 nginx,您可能需要启用 gzip on;,因为这是可变标头工作所必需的。
我希望这会有所帮助。仅供参考,这适用于所有服务器/站点配置文件,除非在它们各自的服务器块中被覆盖。 server {}
nginx、apache 和 IIS 的源信息:https://www.maxcdn.com/blog/accept-encoding-its-vary-important/
【讨论】:
如果您已经尝试了其他答案并且仍然发现变化不大(例如,如果您正在使用 GTMetrix 测试页面的速度),那么以下方法可能会有所帮助:
确保您的所有 gzip_types 也在 /etc/nginx/nginx.conf http 部分中设置。
/etc/nginx/sites-available/* 中的服务器块是您可以设置不同标头和 gzip_types 的地方,但根据您的站点设置方式,您可能会在文件到达之前处理和返回文件一点配置。
在 /etc/nginx/nginx.conf 中,您会找到一个“http”部分 - 在这里,还有一个 gzip_types 和 gzip_vary。
对我来说 - CSS 和 JS 是静态文件,在点击 (wordpress) nginx 站点可用文件(我前面有清漆)之前已经提供了服务。
因此,将 gzip_types 的完整列表添加到 nginx.conf 中的 http 部分解决了我的问题。
【讨论】: