如何在NGINX PageSpeed模块资源上启用gzip压缩?


13

我一直致力于优化某个网站,以使其在Google PageSpeed Insights工具(针对移动设备和台式机)上获得100分。大多数项目都可以正常工作,但是我仍然收到该网站的“启用压缩”警告。

这很麻烦,因为在我的服务器上启用了gzip,并且唯一未压缩的资源来自NGINX PageSpeed模块。我已经浏览了Google网站上的配置页面,但是除了已经存在的常规NGINX配置之外,没有任何内容描述如何启用压缩。

我的问题是:如何启用gzip压缩使其适用于pagespeed资源?

我的服务器设置:

Ubuntu 12.0.4.3 LTS NGINX-使用PageSpeed模块1.6.29.5 beta进行自定义编译1.5.4

NGINX服务器配置:

user  www-data;
#set worker processes to cpu processes
worker_processes  4;

error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
events {
        worker_connections  1024;
}


http {
        client_max_body_size 200m;
        include /etc/nginx/mime.types;
        default_type application/octet-stream;
        access_log /var/log/nginx/access.log;
        sendfile on;
        keepalive_timeout 3;
        types_hash_max_size 2048;
        gzip  on;
        gzip_disable msie6;
        gzip_static on;
        gzip_types text/plain text/css application/x-javascript text/xml application/xml+rss text/javascript;
        gzip_vary on;
        fastcgi_read_timeout 2m;

        include global/caching.conf;
        include /etc/nginx/enabled-sites/*;
        upstream php {
                server 127.0.0.1:9000;
        }
        #fastcgi caching header
        add_header mcapp-fastcgi-cache $upstream_cache_status;
}

网站配置:

server {
        server_name www.examplesite.com;
        rewrite ^ $scheme://examplesite.com$request_uri permanent;
}

server {
        #pagespeed directives
        pagespeed On;
        pagespeed FileCachePath /var/cache/nginx-pagespeed;
        location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
                add_header "" "";
        }
        location ~ "^/ngx_pagespeed_static/" { }
        location ~ "^/ngx_pagespeed_beacon$" { }
        #pagespeed directives end

        server_name examplesite.com;
        root /path/to/examplesite;

        # wordpress config
        include global/restrictions.conf;
        include global/wordpress.conf;
}

编辑 为了进一步阐述,似乎没有压缩的特定资产是javascript资产。举个例子:

Enable compression for the following resources to reduce their transfer size by 355.5KiB (69% reduction).
    Compressing http://examplesite.com/wp-includes/js/jquery/jquery.js,qver=1.10.2.pagespeed.jm.iCH2ukpEYb.js could save 58.8KiB (64% reduction).
    Compressing http://examplesite.com/wp-content/themes/Avada/framework/plugins/revslider/rs-plugin/js/jquery.themepunch.revolution.min.js?ver=3.6.1 could save 43.9KiB (80% reduction).

您是否使用其他工具(例如redbot)进行了检查?我发现pagespeed不可靠,尤其是在设置gzip时,或者expires 24hrs由于某种原因我总是收到“哔哔,您拿着它不对劲”。同样适用于YSLOW
那个家伙在

我检查了redbot,它正在使用gzip压缩大多数资产(例如实际的html和css文件)。但是,来自PageSpeed的大多数JavaScript资产并未得到压缩。我的配置设置为压缩application / x-javascript和text / javascript mime-type,并且我已验证它可以在具有javascript资产的其他网站上运行。但是由于某种原因,它似乎不适用于PageSpeed提供的资产。
13年

Answers:


16

经过大量的拔发,咬牙和说话者打孔(和谷歌搜索)之后,我在NGINX支持论坛中遇到了一个缺陷请求,该缺陷请求从application / x-javascript更改了javascript(.js)MIME类型。到应用程序/ javascript。看到 http://trac.nginx.org/nginx/ticket/306

从我的问题中的nginx.conf可以看到,我有:

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

这实际上导致gzip_types忽略了我的javascript文件,因为不再有application / x-javascript MIME类型(除非您在mime-types.conf中进行了自定义,或者您的NGINX版本确实很旧) 。

我将这一行更改为这一行:

gzip_types text/plain text/css application/javascript text/xml application/xml+rss;

重新加载NGINX -s之后,我的javascript文件压缩就好了!因此,事实证明它与PageSpeed模块无关,而是我的配置没有确定要压缩的正确mime类型的问题。


1
只是注意-由于某种原因,我不得不保持双方application/x-javascriptapplication/javascript,因为在我的请求,我得到两个MIME类型(我不知道是否应该切换到刚才application/javascript
尼古拉·伊万诺夫尼科洛夫


2

根据RFC 4329,您的网络服务器应该使用application/javascript而不应该使用application/x-javascript

首先,你应该检查你的/etc/nginx/nginx.conf文件包含(至少)application/javascript旁边gzip_types

例如

gzip_types text/plain text/css application/javascript text/xml application/xml+rss;

然后,打开您的MIME类型文件/etc/nginx/mime.types,并确保看到以下内容:

application/x-javascript                  js;

application/javascript                  js;

最后,重新加载您的配置:

service nginx reload

而已!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.