मैं NGINX पेजस्पीड मॉड्यूल संसाधनों पर gzip संपीड़न कैसे सक्षम करूं?


13

मैं एक निश्चित वेबसाइट को अनुकूलित करने पर बहुत अधिक ध्यान केंद्रित कर रहा हूं ताकि यह Google पेजस्पीड इनसाइट्स टूल (मोबाइल और डेस्कटॉप दोनों के लिए) पर 100 स्कोर करे। अधिकांश आइटम त्रुटिपूर्ण रूप से काम कर रहे हैं, लेकिन मुझे वेबसाइट के लिए "सक्षम संपीड़न" चेतावनी प्राप्त करना जारी है।

यह परेशान करने वाला है, क्योंकि मेरे सर्वर पर gzip सक्षम है, और केवल उन्हीं संसाधनों को असम्पीडित किया जा रहा है जो NGINX PageSpeed ​​मॉड्यूल से आ रहे हैं। मैं Google की वेबसाइट पर कॉन्फ़िगरेशन पृष्ठों के माध्यम से चला गया हूं, लेकिन ऐसा कुछ भी नहीं है जो संपीड़न को सक्षम करने का वर्णन करता है, सामान्य एनजीआईएनएक्स कॉन्फ़िगरेशन के अलावा जो पहले से ही है।

मेरा प्रश्न यह है: मैं gzip कम्प्रेशन को कैसे सक्षम करूं ताकि यह पेजपेड संसाधनों के लिए काम करे?

मेरा सर्वर सेटअप:

Ubuntu 12.0.4.3 LTS NGINX - कस्टम पेजस्पेड मॉड्यूल 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;
}

संपादित करें बस आगे विस्तृत करने के लिए, विशिष्ट संपत्तियां जो संपीड़ित नहीं लगती हैं वे जावास्क्रिप्ट संपत्ति हैं। उदाहरण के तौर पे:

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).

क्या आपने रेडबोट जैसे अन्य उपकरणों के साथ जाँच की? मैंने पाया कि पेजस्पेड विश्वसनीय नहीं है, gzip सेट करते समय या expires 24hrsकिसी कारण से मुझे हमेशा "BEEEEP, YOU’RE होल्डिंग आईटी गलत" मिलता है। वही YSLOW के लिए लागू होता है
से उस आदमी

मैंने रेडबोट की जांच की, और यह अधिकांश संपत्ति को gzip (जैसे वास्तविक html और सीएसएस फ़ाइलें) के साथ संपीड़ित कर रहा है। हालाँकि, PageSpeed ​​से आने वाली अधिकांश जावास्क्रिप्ट संपत्तियों को संपीड़ित नहीं किया जा रहा है। मेरा कॉन्फ़िगरेशन एप्लिकेशन / x-javascript और टेक्स्ट / जावास्क्रिप्ट माइम-प्रकारों को संपीड़ित करने के लिए सेट है, और मैंने सत्यापित किया है कि यह अन्य वेबसाइटों पर काम करता है, जिनके पास जावास्क्रिप्ट एसेट्स हैं। किसी कारण के लिए, यह सिर्फ PageSpeed ​​की सेवा की गई संपत्ति के लिए काम नहीं करता है।
स्क्रीवल्स

जवाबों:


16

बालों के बहुत अधिक खींचने, दांतों को कुतरने, और स्पीकर-पंचिंग (और गूगलिंग) के बाद, मुझे एप्लिकेशन / x-javascript से जावास्क्रिप्ट (.js) माइम-टाइप को बदलने के लिए एक NGINX सपोर्ट फोरम में एक दोषपूर्ण अनुरोध आया। आवेदन / जावास्क्रिप्ट के लिए। 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 द्वारा नजरअंदाज करने का कारण बन रहा था, क्योंकि अब कोई एप्लिकेशन / x-जावास्क्रिप्ट माइम-प्रकार नहीं है (जब तक कि आप माइम-टाइप में एक कस्टम नहीं बनाते हैं ।conf और आपके पास NGINX का वास्तव में पुराना संस्करण है) ।

मैंने उस लाइन को इस एक में बदल दिया:

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

एक NGINX -s रीलोड के बाद, मेरी जावास्क्रिप्ट फाइलें ठीक ठीक सेक! इसलिए, यह पता चला है कि इसका पेजस्पीड मॉड्यूल से कोई लेना-देना नहीं था, और इसके बजाय मेरे कॉन्फ़िगरेशन के साथ एक समस्या थी कि कंप्रेस करने के लिए सही माइम-प्रकार की पहचान नहीं करना।


1
बस एक नोट - किसी कारण से मुझे दोनों रखना पड़ा application/x-javascriptऔर application/javascript, मेरे अनुरोध के दौरान मुझे दोनों प्रकार के माइम मिल रहे थे (मुझे आश्चर्य है कि क्या मुझे सिर्फ स्विच करना चाहिए application/javascript
निकोला इवानोव निकोलेव

3

रिलीज के रूप में 1.9.32.1-बीटा, ngx_pagespeed स्वयं को सक्षम करेगा और gzip को कॉन्फ़िगर करेगा जब कोई स्पष्ट gzip कॉन्फ़िगरेशन nginx में मौजूद नहीं है (और gzip संपीड़न मॉड्यूल संकलित है)।

Https://developers.google.com/speed/pagespeed/module/release_notes#release_1.9.32.1-beta देखें


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

बस!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.