Gzip vs Brotli – Hangi Sıkıştırma Yöntemini Kullanmalısınız ve Neden
Yayınlanan: 2018-03-02Gzip, 1990'ların başında dosya sıkıştırma için altın standart haline geldi, ancak hala 2018'i kullanıyorsanız, daha yeni bir sıkıştırma yöntemine geçmeyi düşünebilirsiniz.
Gzip hala birçok kişinin kalbinde yer alsa da, web geliştiricileri giderek Google'ın Brotli sıkıştırma algoritması gibi üstün seçeneklere yöneliyor.
Dosya Sıkıştırmanın Kısa Tarihi
Gzip'teki "G", GNU'nun kısaltmasıdır. GNU, 1980'lerde geliştirilen açık kaynaklı, Unix tabanlı bir işletim sistemidir. O zamana kadar, Unisys ve IBM, dosyaları sıkıştırmak ve açmak için kendi algoritmalarının patentini almışlardı, bu da makinelerinin daha fazla veri depolamasına izin verdi. Bu nedenle programcılar Jean-loup Gailly ve Mark Adler, GNU kullanıcıları için ücretsiz bir alternatif olarak Gzip'i yarattılar.
Yeni Gzip sadece ucuz bir taklit değildi; aslında telif hakkıyla korunan rakiplerinden daha hızlıydı. Sonuç olarak, insanlar hala bu güne kadar dosya sıkıştırma için kullanıyor. Kendinizi rahat hissettiğiniz şeye bağlı kalmak kolay olsa da, şu anda Gzip'ten daha iyi sıkıştırma sonuçları sağlayan çeşitli sıkıştırma algoritmaları vardır. Brotli'nin devreye girdiği yer burasıdır.
Brotli nedir?
Brotli, verileri Gzip'ten daha verimli bir şekilde yoğunlaştırmak için birden çok algoritmadan yararlanan daha yeni bir veri biçimi özelliğidir. 2015 yılında, Brotli belirtimi, içerik kodlama türü 'br' ile HTTP akış sıkıştırması için genelleştirildi.
Jyrki Alakuijala ve Zoltan Szabadka tarafından geliştirilen Brotli, Gzip ile aynı sıkıştırma algoritmalarını kullanır, ancak daha iyi bir sıkıştırma oranı sağlamak için sık kullanılan kelimeler ve ifadelerden oluşan bir sözlük tarafından da desteklenir.
Gzip ve Brotli'nin yalnızca metin dosyalarını sıkıştırmak için kullanılması gerektiğini unutmayın. JPEG'ler ve MP4'ler gibi ikili dosyalar, biçime özgü kendi sıkıştırma algoritmalarına dayanır. Brotli ile bir JPEG sıkıştırmaya çalışırsanız, ortaya çıkan dosya aslında orijinalinden daha büyük olacaktır.
Her zaman böyle olmasa da, Brotli artık tüm büyük tarayıcılar tarafından destekleniyor.
Brotli'yi desteklemeyen bir tarayıcının Brotli ile sıkıştırılmış dosyalar sunan bir siteden bir varlık talep etmesi durumunda, sunucu Gzip'e geri döner ve sunucunun doğru yapılandırılması koşuluyla tarayıcının desteklediği kodlanmış varlıkları teslim eder.
Brotli'yi Daha İyi Yapan Nedir?
CertSimple tarafından yürütülen araştırmaya göre:
- Brotli ile sıkıştırılan JavaScript paketleri, Gzip ile sıkıştırılan Javascript paketlerinden yüzde 14 daha küçüktür .
- Broti tarafından sıkıştırılan HTML dosyaları, Gzip eşdeğerlerinden yüzde 21 daha küçüktür .
- Brotli tarafından sıkıştırılan CSS dosyaları, Gzip tarafından sıkıştırılanlardan yüzde 17 daha küçüktür .
Çoğu web sitesi bu tür varlıkların üçüne de dayandığından, bu, Gzip ile karşılaştırıldığında varlık boyutlarında önemli bir farktır. Bu tasarruflar, uygulamanızın performansında gözle görülür bir iyileşme sağlayacaktır.
Gzip vs Brotli: Brotli'den En İyi Şekilde Yararlanma
Duymuş olabileceğiniz şeye rağmen Brotli ile varlıkları sıkıştırmak Gzip'ten daha yavaş değildir. Bununla birlikte, Gzip ve Brotli değişken sıkıştırma seviyeleri sunar ve Brotli'nin varsayılan ayarları, Gzip'in varsayılan ayarlarından daha yavaş sıkıştırmaya neden olabilir. Dosya boyutu ve sıkıştırma hızı arasında kabul edilebilir bir denge sağlamak için Brotli'de bazı ayarlamalar yapmanız gerekecek.
İdeal sıkıştırma ayarı, neyi ve ne zaman sıkıştırdığınıza bağlıdır. Dinamik içeriğin daha hızlı sıkıştırılması için iyi bir başlangıç noktası Brotli 4'tür. Öte yandan, statik varlıklar hızdan ödün vermeden önceden daha yoğun bir şekilde sıkıştırılabilir, bu nedenle varsayılan “11” ayarı bu tür içerikler için daha uygundur.
Brotli'yi Web Sunucunuza Kurmak
Brotli için destek eklemek, minimum çabayla önemli kazanımlar sağlar. Hangi web sunucusu yazılımını kullandığınıza bağlı olarak, Brotli'yi entegre etmek için hangi entegrasyon yöntemini kullanmanız gerektiğini belirleyecektir. Aşağıdakiler, mevcut birkaç seçeneği özetlemektedir:
- Nginx , Google tarafından sunulan bir Brotli uzantısına sahiptir.
- Apache, özel bir Brotli uzantısı sunar .
- Microsoft IIS herhangi bir resmi Brotli desteği sunmaz, ancak destek ekleyen bir topluluk modülü vardır.
- Node.js , Microsoft'a benzer, çünkü resmi bir destek yoktur, ancak bir topluluk modülü vardır.
Hızlı bir kurulum örneği göstermek için, diyelim ki Nginx çalıştırıyorsunuz. Bu durumda, ngx_brotli modülünü aşağıdakilerle kurabilirsiniz:
cd nginx-1.x.x $ ./configure --add-module=/path/to/ngx_brotli $ make && make install
Ardından, HTTPS bloğuna aşağıdakini ekleyin (Brotli yalnızca HTTPS üzerinden çalışır):
brotli on; brotli_static on; brotli_comp_level 4; brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
Yukarıdaki yönergeleri uygun gördüğünüz şekilde değiştirebilirsiniz.
Son olarak, NGINX'i yeniden başlatmak ve avantajlardan yararlanmaya başlamak için aşağıdakileri girin:
sudo systemctl restart nginx
Brotli'yi Önceden Sıkıştırılmış Varlıklarla Kullanma
Brotli, önceden sıkıştırılmış varlıkları Gzip'ten çok daha hızlı sunmak için mükemmeldir. Bunun nedeni, onları Brotli'nin en yüksek seviyesinde (11) sıkıştırabilmeniz ve ardından istendiğinde Origin sunucusunun bunları almasını sağlayabilmenizdir.
Statik varlıklarınızı hem Gzip hem de Brotli olarak otomatik olarak sıkıştırmak için bir Webpack eklentisi mevcut olduğundan, bu tür bir kurulum Webpack ile harika çalışır. Bu nedenle, anında sıkıştırma gerekmez; bu, aksi takdirde dosyaları sıkıştırmak için harcanan zamanın kaydedildiği anlamına gelir.
Brotli ile sıkıştırılmış varlıklar oluşturmak için Webpack'in nasıl kullanılacağı hakkında daha fazla bilgi edinin.
CDN'niz Brotli'yi Destekliyor mu?
Brotli'nin avantajlarından tam olarak yararlanmak için onu destekleyen bir içerik dağıtım ağına ihtiyacınız var. Örneğin KeyCDN, geçen yıl Brotli desteğini tüm müşteriler için hiçbir ek ücret ödemeden sundu. Bu nedenle, siteniz yalnızca daha iyi Brotli sıkıştırması sayesinde küçültülmüş dosya boyutlarından faydalanmakla kalmayacak, aynı zamanda ziyaretçilerinize daha yakın olan uç sunucularda önbelleğe alınan varlıklar sayesinde daha düşük gecikme süresinden de faydalanacaktır.
Bu yöntem, kaynak sunucunuzun Brotli'yi desteklemesini ve asıl sıkıştırmanın asıl sunucu tarafında gerçekleşmesini gerektirir. Yine, bu zamandan tasarruf etmeye yardımcı olur ve performansa zarar verebilecek anında sıkıştırma ihtiyacını ortadan kaldırır.
Gzip vs Brotli: Özetle
Brotli'yi web sunucunuza eklemek için gereken küçük çaba, önemli dosya boyutu tasarruflarına değer. Brotli bazen en yüksek sıkıştırma ayarlarında daha yavaş çalışabilse de, ayarları değiştirerek sıkıştırma hızı ve dosya boyutu arasında ideal bir dengeyi kolayca elde edebilirsiniz.
Brotli'yi kullanmak, hızlı web uygulamalarını daha hızlı uygulamalara dönüştürebilirken, yavaş uygulamaları mutlaka hızlandırmaz. Brotli yalnızca metin tabanlı varlıkları sıkıştırdığından, resimlerinizi başka yollarla optimize etmeniz gerekir. Henüz HTTP/2'ye geçmediyseniz, bunu yapmak uygulamanızın performansında büyük bir fark yaratabilir. Her milisaniye önemlidir, bu nedenle uygulamanızı hızlandırmak için yaptığınız her işlem, kullanıcıları elde tutma şansınızı artırır.