NGINX PageSpeed ​​Module kaynaklarında gzip Sıkıştırmasını nasıl etkinleştiririm?


13

Google PageSpeed ​​Insights aracında (hem mobil hem de masaüstü için) 100 puan elde etmek için belirli bir web sitesini optimize etmeye yoğun bir şekilde odaklandım. Öğelerin çoğu kusursuz çalışıyor, ancak web sitesi için "Sıkıştırmayı Etkinleştir" uyarısını almaya devam ediyorum.

Sunucumda gzip etkinleştirildiğinden ve sıkıştırılmamış olarak sunulan tek kaynaklar NGINX PageSpeed ​​modülünden geldiğinden, bu zahmetlidir. Google'ın web sitesindeki yapılandırma sayfalarını inceledim, ancak zaten mevcut olan genel NGINX yapılandırması dışında sıkıştırmanın nasıl etkinleştirileceğini açıklayan hiçbir şey yok.

Benim sorum şudur: Gzip sıkıştırmasını sayfa hızı kaynakları için çalışacak şekilde nasıl etkinleştirebilirim?

Sunucu kurulumum:

Ubuntu 12.0.4.3 LTS NGINX - Özel Sayfa 1.5 Hız modülü 1.6.29.5 beta ile derlendi 1.5.4

NGINX Sunucu Yapılandırması:

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

Web Sitesi Yapılandırması:

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

DÜZENLEME Daha da ayrıntılı olarak, sıkıştırıcı görünmeyen belirli varlıklar javascript varlıklarıdır. Örnek olarak:

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 gibi başka araçlarla kontrol ettin mi? Ben gzip ayarlarken esp güvenilir değil, esp buldum veya expires 24hrsbir nedenle her zaman "BEEEEP, YANLIŞ TUTMAK" olsun. Aynı şey YSLOW için de geçerli
oradaki adam

Redbot'u kontrol ettim ve varlıkların çoğunu gzip (gerçek html ve css dosyaları gibi) ile sıkıştırıyor. Ancak, PageSpeed'den gelen javascript varlıklarının çoğu sıkıştırılmamaktadır. Benim yapılandırma uygulama / x-javascript ve metin / javascript mime türlerini sıkıştırmak için ayarlanmış ve ben javascript varlıkları olan diğer web sitelerinde çalıştığını doğruladım. Bazı nedenlerden dolayı, PageSpeed ​​sunulan varlıklar için çalışmıyor gibi görünüyor.
Scrivvles

Yanıtlar:


16

Saç çekme, dişleri gıcırdatma ve hoparlör delme (ve Googling) sonrasında, bir NGINX destek forumunda javascript (.js) mim tipini uygulamadan / x-javascript'ten değiştirmek için bir kusur talebine rastladım uygulama / javascript. Bkz. Http://trac.nginx.org/nginx/ticket/306

Benim sorum nginx.conf görebileceğiniz gibi, ben vardı:

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

Bu aslında javascript dosyalarımın gzip_types tarafından göz ardı edilmesine neden oluyordu, çünkü artık uygulama / x-javascript mime-tipi yok (mime-type.conf'da özel bir tane oluşturmadıkça veya NGINX'in gerçekten eski bir sürümü yoksa) .

O çizgiyi şu şekilde değiştirdim:

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

Bir NGINX -s yeniden yüklendikten sonra, benim javascript dosyaları gayet iyi sıkıştırmak! Yani, PageSpeed ​​modülü ile ilgisi olmadığı ortaya çıktı ve bunun yerine yapılandırmamın sıkıştırılacak doğru mime tipini tanımlamamasıyla ilgili bir sorun vardı.


1
Sadece bir not - bir nedenden dolayı her ikisini de saklamak zorunda kaldım application/x-javascriptve application/javascripttaleplerim sırasında her iki mim tipini de alıyordum (sadece application/javascript
Nikola Ivanov Nikolov


2

RFC 4329 uyarınca , web sunucunuz kullanmalı application/javascriptve kullanmamalıdır application/x-javascript.

İlk olarak, /etc/nginx/nginx.confdosyanızın (en azından) application/javascriptyanında aşağıdakileri içerdiğini kontrol etmelisiniz gzip_types:

Örneğin

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

Ardından, MIME türleri dosyanızı açın /etc/nginx/mime.typesve şunu görürseniz emin olun:

application/x-javascript                  js;

için

application/javascript                  js;

Son olarak yapılandırmanızı yeniden yükleyin:

service nginx reload

Bu kadar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.