Como habilitar a compactação gzip nos recursos do NGINX PageSpeed Module?

13

Tenho me concentrado muito na otimização de um determinado website para que ele alcance 100 na ferramenta Google PageSpeed Insights (para dispositivos móveis e computadores). A maioria dos itens está funcionando perfeitamente, mas continuo recebendo o aviso "Ativar compactação" para o site.

Isso é problemático, porque o gzip está habilitado no meu servidor e os únicos recursos que estão sendo descomprimidos vêm do módulo NGINX PageSpeed. Eu passei pelas páginas de configuração no site do Google, mas não há nada que descreva como habilitar a compactação, além da configuração geral do NGINX que já está em vigor.

Minha pergunta é a seguinte: Como habilito a compactação gzip para que ela funcione para recursos de velocidade de páginas?

Minha configuração do servidor:

Ubuntu 12.0.4.3 LTS NGINX - Custom compilado 1.5.4 com o módulo PageSpeed 1.6.29.5 beta

Configuração do NGINX Server:

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;
}

Configuração do site:

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;
}

EDITAR Apenas para elaborar mais, os ativos específicos que não parecem estar comprimindo são os ativos de javascript. Como exemplo:

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).
    
por Scrivvles 01.10.2013 / 17:45

3 respostas

16

Depois de muito mais puxões de cabelo, ranger de dentes e perfuração de alto-falante (e Googling), me deparei com uma solicitação de defeito em um fórum de suporte NGINX para alterar o javascript (.js) mime-type do aplicativo / x-javascript para aplicativo / javascript. Veja link

Como você pode ver pelo nginx.conf na minha pergunta, eu tive:

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

Isso estava essencialmente fazendo com que meus arquivos javascript fossem ignorados pelo gzip_types, porque não existe mais o tipo mime do aplicativo / x-javascript (a menos que você faça um personalizado no mime-types.conf ou você tenha uma versão muito antiga NGINX).

Eu mudei essa linha para esta:

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

Após um recarregamento do NGINX, meus arquivos javascript são muito bem compactados! Então, acontece que não tinha nada a ver com o módulo PageSpeed e, em vez disso, era um problema com a minha configuração não identificar o tipo mime correto para compactar.

    
por 03.10.2013 / 01:21
3

A partir do Release 1.9.32.1-beta, o ngx_pagespeed habilitará e configurará o próprio gzip quando não existir nenhuma configuração explícita do gzip no nginx (e o módulo de compactação gzip estiver compilado).

Veja link

    
por 15.01.2015 / 21:35
2

De acordo com o RFC 4329 , o seu servidor web deve usar application/javascript e não application/x-javascript .

Primeiro, você deve verificar se o arquivo /etc/nginx/nginx.conf contém (pelo menos) application/javascript ao lado de gzip_types :

Por exemplo,

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

Em seguida, abra o arquivo de tipos MIME /etc/nginx/mime.types e verifique se, se você vir isto:

application/x-javascript                  js;

para

application/javascript                  js;

Por fim, recarregue sua configuração:

service nginx reload

É isso aí!

    
por 24.11.2014 / 17:19