NGINX PageSpeed ​​모듈 리소스에서 gzip 압축을 어떻게 활성화합니까?


13

Google PageSpeed ​​Insights 도구 (모바일 및 데스크톱 모두)에서 100 점을 얻도록 특정 웹 사이트를 최적화하는 데 집중했습니다. 대부분의 항목이 완벽하게 작동하지만 웹 사이트에 대해 "압축 사용"경고가 계속 나타납니다.

내 서버에서 gzip이 활성화되어 있고 압축되지 않은 상태로 제공되는 리소스는 NGINX PageSpeed ​​모듈에서 가져 오기 때문에 문제가됩니다. Google 웹 사이트의 구성 페이지를 살펴 보았지만 이미 설치된 일반적인 NGINX 구성 외에 압축을 활성화하는 방법을 설명하는 것은 없습니다.

내 질문은 이것입니다 : 페이지 속도 리소스에서 작동하도록 gzip 압축을 어떻게 활성화합니까?

내 서버 설정 :

Ubuntu 12.0.4.3 LTS NGINX-PageSpeed ​​모듈 1.6.29.5 베타로 사용자 정의 컴파일 된 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과 같은 다른 도구로 확인 했습니까? 나는 gzip을 설정할 때 또는 페이지 속도가 안정적이지 않다는 것을 알았다 expires 24hrs. 같은 YSlow에 적용
저기에서 그 사람

redbot을 확인했으며 gzip으로 실제 대부분의 자산을 압축하고 있습니다 (예 : 실제 html 및 css 파일). 그러나 PageSpeed에서 제공되는 대부분의 Javascript 자산은 압축되지 않습니다. 내 구성은 application / x-javascript 및 text / javascript mime 유형을 압축하도록 설정되어 있으며 javascript 자산이있는 다른 웹 사이트에서 작동하는지 확인했습니다. 그러나 어떤 이유로 든 PageSpeed ​​게재 자산에서는 작동하지 않는 것 같습니다.
Scrivvles

답변:


16

머리카락을 더 많이 당기고, 치아를 바르고, 스피커를 펀칭하고 (구글링) NGINX 지원 포럼에서 결함 요청을 통해 application / x-javascript에서 javascript (.js) MIME 유형을 변경했습니다. 응용 프로그램 / 자바 스크립트에. 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;

더 이상 application / x-javascript mime-type이 없거나 (mime-types.conf에서 사용자 정의 파일을 만들거나 NGINX의 오래된 버전이 아닌 한) gzip_types에서 내 자바 스크립트 파일을 무시했습니다. .

나는 그 줄을 이것으로 바꿨다.

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

NGINX -s 재로드 후 내 자바 스크립트 파일은 잘 압축됩니다! 따라서 PageSpeed ​​모듈과 관련이 없으며 압축 할 올바른 MIME 유형을 식별하지 못하는 구성에 문제가있는 것으로 나타났습니다.


1
참고 사항-어떤 이유로 든 두 가지를 모두 유지해야 application/x-javascript했고 application/javascript, 요청하는 동안 두 가지 MIME 유형을 모두 얻었 으므로 (나는 그냥 전환 해야하는지 궁금합니다 application/javascript.
Nikola Ivanov Nikolov


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

그게 다야!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.