
GZIP, internet üzerinden dosya göndermek için yaygın olarak kullanılan kayıpsız bir sıkıştırma yöntemidir. GZIP, dosya boyutlarını %70’e kadar küçültebilir ve dosyaları diğer sıkıştırma yöntemlerine göre çok daha kısa sürede ve daha az bilgi işlem gücüyle sıkıştırır. Web sitenize GZIP sıkıştırması uyguladığınızda, sıkıştırılmamış bir dosyaya göre çok daha az bant genişliği kullandığınız için dosyalarınız kullanıcılara daha hızlı gönderilir.
Sitenizde GZIP sıkıştırmasını etkinleştirebilecek birçok eklenti vardır. Bu, süreci bir kutuyu işaretlemek kadar basit hale getiren, hız optimizasyonu eklentilerinin ortak bir özelliğidir. Web siteniz bir Apache sunucusunda barındırılıyorsa (muhtemelen öyledir), .htaccess dosyanıza aşağıdaki kodu ekleyerek GZIP sıkıştırmasını manuel olarak da etkinleştirebilirsiniz:
AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml
Eğer Nginx web server kullanan bir sunucudaysanız gzip için bunları yapmalısınız;
Sıkıştırmayı Etkinleştirme
Sıkıştırmayı etkinleştirmek için on parametresiyle gzip yönergesini ekleyin.
gzip on;
Varsayılan olarak, NGINX yanıtları yalnızca MIME tipi text/html ile sıkıştırır. Yanıtları diğer MIME türleriyle sıkıştırmak için gzip_types yönergesini ekleyin ve ek türleri listeleyin.
gzip_types text/plain application/xml;
Sıkıştırılacak yanıtın minimum uzunluğunu belirtmek için gzip_min_length yönergesini kullanın. Varsayılan 20 bayttır (burada 1000 olarak ayarlanmıştır):
gzip_min_length 1000;
Varsayılan olarak NGINX, proxy’li isteklere (proxy sunucusundan gelen istekler) verilen yanıtları sıkıştırmaz. Bir isteğin bir proxy sunucusundan geldiği, istekte Via başlık alanının bulunmasıyla belirlenir. Bu yanıtların sıkıştırılmasını yapılandırmak için gzip_proxied yönergesini kullanın. Yönerge, NGINX’in hangi tür vekil istekleri sıkıştırması gerektiğini belirten bir dizi parametreye sahiptir. Örneğin, yanıtları yalnızca proxy sunucusunda önbelleğe alınmayacak isteklere sıkıştırmak mantıklıdır. Bu amaçla gzip_proxied yönergesi, NGINX’e bir yanıtta Cache-Control başlık alanını kontrol etmesi ve değer önbelleksiz, depolamasız veya özel ise yanıtı sıkıştırması talimatını veren parametrelere sahiptir. Ek olarak, Expires başlık alanının değerini kontrol etmek için süresi dolmuş parametresini eklemeniz gerekir. Bu parametreler, Yetkilendirme başlık alanının varlığını kontrol eden auth parametresiyle birlikte aşağıdaki örnekte ayarlanmıştır (yetkili yanıt son kullanıcıya özeldir ve tipik olarak önbelleğe alınmaz):
gzip_proxied no-cache no-store private expired auth;
Diğer birçok direktifte olduğu gibi, sıkıştırmayı konfigüre eden direktifler http bağlamına veya bir sunucu veya konum konfigürasyon bloğuna dahil edilebilir.
Gzip sıkıştırmasının genel yapılandırması şöyle görünebilir.
server {
gzip on;
gzip_types text/plain application/xml;
gzip_proxied no-cache no-store private expired auth;
gzip_min_length 1000;
...
}
Dekompresyonu Etkinleştirme
Bazı istemciler, gzip kodlama yöntemiyle yanıtları desteklemez. Aynı zamanda, sıkıştırılmış verileri depolamak veya yanıtları anında sıkıştırmak ve bunları önbellekte depolamak istenebilir. NGINX, sıkıştırılmış verileri kabul eden ve etmeyen istemcilere başarılı bir şekilde hizmet vermek için, ikinci tür istemciye gönderirken verileri anında açabilir.
Çalışma zamanı sıkıştırmasını açmayı etkinleştirmek için gunzip yönergesini kullanın.
location /storage/ {
gunzip on;
...
}
gunzip yönergesi, gzip yönergesiyle aynı bağlamda belirtilebilir:
server {
gzip on;
gzip_min_length 1000;
gunzip on;
...
}
Bu yönergenin, varsayılan olarak bir NGINX Açık Kaynak derlemesine dahil edilmeyebilecek ayrı bir modülde tanımlandığını unutmayın.
Sıkıştırılmış Dosyaları Gönderme
İstemciye normal dosya yerine sıkıştırılmış bir dosya göndermek için, uygun bağlamda gzip_static yönergesini açık olarak ayarlayın.
location / {
gzip_static on;
}
Bu durumda, bir /path/to/file isteğine hizmet vermek için NGINX, /path/to/file.gz dosyasını bulmaya ve göndermeye çalışır. Dosya yoksa veya istemci gzip’i desteklemiyorsa, NGINX dosyanın sıkıştırılmamış sürümünü gönderir.
gzip_static yönergesinin anında sıkıştırmayı etkinleştirmediğini unutmayın. Yalnızca önceden herhangi bir sıkıştırma aracı tarafından sıkıştırılmış bir dosya kullanır. İçeriği (yalnızca statik içeriği değil) çalışma zamanında sıkıştırmak için gzip yönergesini kullanın.
Bu yönerge, varsayılan olarak bir NGINX Açık Kaynak derlemesine dahil edilmeyebilecek ayrı bir modülde tanımlanmıştır.
Nginx gzip sıkıştırma kısmı Nginx kendi web sitesinden inceleyebilirsiniz: Nginx Gzip sıkıştırma