1. Giriş
Nginx'in statik kaynakları sıkıştırması, sunucu tarafında sıkıştırmayı açmak için tarayıcı tarafına sıkıştırmak ve iletmektir.Bu sıkıştırma ve açma işlemi, ara ağ iletiminin tüketimini azaltır. Sunucudaki bant genişliği kaynaklarının tüketimini azaltmak ve gerçek zamanlı iletim sağlamak için iletilen dosyaların boyutunu azaltmaktır.
Sıkıştırma için Nginx'in gizp sıkıştırma ayarını etkinleştirebiliriz.
İki, gizp yapılandırması
#Open gzip gzip açık; # gzip sıkıştırma düzeyi gzip_comp_level 2; # Gzip ile sıkıştırılan en küçük dosyayı etkinleştirin gzip_min_length 1k; # Sıkıştırılacak dosya türü. gzip_types metin / düz uygulama / javascript uygulaması / x-javascript metni / css uygulaması / xml metni / javascript uygulaması / x-httpd-php görüntüsü / jpeg görüntüsü / gif görüntüsü / png;Daha fazla ayar referansı: Nginx document gzip ile ilgili parametre ayarları
3. Demo
Öncelikle sunucu üzerinde demo.jpg dosyasını hazırladım
Sonra /etc/nginx/conf.d/new test.conf adresine gidip
server { 80 dinle; server_name localhost; dosya gönder; #charset koi8-r; access_log /var/log/nginx/host.access.log main; konum ~. * \. (jpg | gif | png) $ { gzip kapalı; gzip_http_version 1.1; gzip_comp_level 2; gzip_types metin / düz uygulama / javascript uygulaması / x-javascript metni / css uygulaması / xml metni / javascript uygulaması / x-httpd-php görüntüsü / jpeg görüntüsü / gif görüntüsü / png; root / opt / app / demo / images; } #error_page 404 /404.html; # sunucu hata sayfalarını statik sayfaya /50x.html'ye yönlendirin # error_page 500502503504404 /50x.html; location = /50x.html { kök / usr / paylaşım / nginx / html; } # 127.0.0.1:80'de dinleyen Apache'ye PHP betiklerini proxy # #location ~ \ .php $ { # proxy_pass #} # PHP betiklerini 127.0.0.1:9000 dinleyen FastCGI sunucusuna geçirin # #location ~ \ .php $ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME / scripts $ fastcgi_script_name; # fastcgi_params dahil; #} # Apache'nin belge kökü ise .htaccess dosyalarına erişimi reddedin # nginx'in biriyle aynı fikirde # #location ~ /\.ht { # Hepsini inkar etmek; #} }Şu anda, resme erişmek için gzip'i kapatın:
Görüntü kaynağı boyutu 749 KB'tır
Sonra gzip'i açıyoruz
konum ~. * \. (jpg | gif | png) $ { gzip açık; gzip_http_version 1.1; gzip_comp_level 2; gzip_types metin / düz uygulama / javascript uygulaması / x-javascript metni / css uygulaması / xml metni / javascript uygulaması / x-httpd-php görüntüsü / jpeg görüntüsü / gif görüntüsü / png; root / opt / app / demo / images; }nginx'i yeniden yükle:
nginx -s yeniden yükle -c /etc/nginx/nginx.conf
Resmi tekrar ziyaret edin:
Görüntü aktarım kaynağının boyutu artık 747KB'ye sıkıştırılmıştır
Gerçekten sıkıştırma olduğunu görebilirsiniz, ancak sıkıştırma oranının ideal olmadığı görülüyor
Aslında gzip, metni daha önemli ölçüde sıkıştırır ve resimlerin sıkıştırma oranı pek ideal değildir.
Metin dosyası sıkıştırma ayarları için sıkıştırma oranını da test ediyoruz:
~. * \. (Txt | xml) $ {konumunun bu bölümünü ekliyoruz gzip kapalı; gzip_http_version 1.1; gzip_comp_level 2; gzip_types metin / düz uygulama / javascript uygulaması / x-javascript metni / css uygulaması / xml metni / javascript uygulaması / x-httpd-php görüntüsü / jpeg görüntüsü / gif görüntüsü / png; root / opt / app / demo / doc; }Ardından / opt / app / demo / doc içinde metin dosyasını hazırlayın
Nginx'i yeniden yükledikten sonra gzip kapalıyken metin dosyasına erişin:
Şu anda, iletim kaynağı boyutu 1,3 MB'dir
Metne tekrar erişmek için gzip'i açtıktan sonra Nginx'i yeniden yüklüyoruz:
Şu anda iletim kaynağı boyutunun 12.4KB olduğu görülebilir.
Gzip'in metin sıkıştırma için ideal olduğunu gösterir.
İlk 9.09 saniye ile 50ms'lik ikinci zaman arasındaki iki sonucu karşılaştırdığımızda, Nginx'in gzip sıkıştırmasının web sayfası yanıt hızını büyük ölçüde artırmasını sağladığı görülebilir.
Eser sahibi: Tanglong Long
Bağlantı: https://www.jianshu.com/p/67075626774c