NGINX gzip 不压缩 JavaScript 文件

90

所有的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;
3个回答

175

更改此行:

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;

请注意将application/javascripttext/javascript添加到您的gzip类型列表中。

此外,有更多细节和更广泛的gzip类型列表,可以在此处发布的答案中找到。


8
这很有趣,因为浏览器中最受支持的旧标准mime类型JavaScript实际上是text/javascript。如果在/etc/nginx/mime.types中配置,它可以正常工作。
text/javascript(已过时):JavaScript;在RFC 4329中定义并过时,以鼓励使用application/javascript。然而,在HTML4和5中允许使用text/javascript,并且与application/javascript不同,它具有跨浏览器支持。在HTML5中,标签的“type”属性是可选的,根本不需要使用它,因为所有浏览器始终假定正确的默认值(即使在HTML4中规范要求使用它)。
来自此线程:text/javascript vs application/javascript 因此,nginx的gzip模块只是建立在先前的标准之上,显然不能正确处理application/javascript mime类型。

1
这是唯一可行的解决方案 text/javascript js; - Salem
我再次遇到了同样的问题,我只需将application/javascript添加到gzip_types中。 - Salem

4

为我工作(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;

1
这帮助我完全摆脱了Lighthouse的“压缩文本”消息。之前,我仍然遇到了一些JS和CSS文件的问题,这些文件包含参数,例如jquery.min.js?ver=2.7.0-wc.6.7.0。但是这对我来说完全解决了问题。非常感谢@iqmaker! - suther

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接