【问题标题】:NGINX gzip not compressing JavaScript filesNGINX gzip 不压缩 JavaScript 文件
【发布时间】:2014-07-19 08:03:10
【问题描述】:

所有的 JavaScript 文件都没有被 nginx gzip 压缩。

CSS 文件正在运行。

在我的nginx.conf 我有以下几行:

gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_proxied any;
gzip_buffers 16 8k;
gzip_types    text/plain application/x-javascript text/xml text/css;
gzip_vary on;

【问题讨论】:

    标签: nginx


    【解决方案1】:

    改变这一行:

    gzip_types    text/plain application/x-javascript text/xml text/css;
    

    变成这样:

    gzip_types    text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
    

    注意在您的 gzip 类型列表中添加了 application/javascripttext/javascript

    在答案posted here 中还有更多详细信息和更广泛的 gzip 类型列表。

    【讨论】:

      【解决方案2】:

      这很有趣,因为浏览器中最受支持的旧标准 mime 类型实际上是 text/javascript。如果你在/etc/nginx/mime.types 中配置它,它就可以工作。

      文本/javascript(已过时):JavaScript;在 RFC 4329 中定义并在 RFC 4329 中过时,以阻止其使用以支持 application/javascript。但是,HTML 4 和 5 中允许使用 text/javascript,并且与 application/javascript 不同,它具有跨浏览器支持。 HTML5 中标签的“type”属性是可选的,根本不需要使用它,因为所有浏览器总是假定正确的默认值(即使在规范要求的 HTML 4 中也是如此)。

      来自这个帖子:text/javascript vs application/javascript

      所以 nginx 的 gzip 模块只是针对以前的标准构建的,显然没有正确处理 application/javascript mime 类型。

      【讨论】:

      • 这是唯一可行的解​​决方案text/javascript js;
      • 我再次面临同样的问题,我只是将application/javascript 添加到gzip_types
      【解决方案3】:

      为我工作(nginx):

      gzip on;
      gzip_disable "msie6";
      gzip_comp_level 6;
      gzip_min_length 1100;
      gzip_buffers 16 8k;
      gzip_proxied any;
      gzip_types
          text/plain
          text/css
          text/js
          text/xml
          text/javascript
          application/javascript
          application/x-javascript
          application/json
          application/xml
          application/rss+xml
          image/svg+xml/javascript;
      

      【讨论】: