İçindekiler
Brotli, sıkıştırma algoritmalarının gözdesi haline gelmiş, web performansını artırmada önemli bir rol oynayan bir teknoloji. Bu yazıda, Brotli’nin ne olduğunu, nasıl çalıştığını ve neden web dünyasında bu kadar büyük bir etkisi olduğunu keşfedeceğiz.
Brotli Nedir?
Brotli, bir sıkıştırma algoritmasıdır. Sıkıştırma işlemi ise verilerin boyutunu azaltma işlemidir. Verileri sıkıştırarak daha küçük boyutlarda depolanabilir veya iletilir hale getirir. Siteye gelen bir ziyaretçi normal şartlarda çok daha yüksek veriyi indirmesi gerekirken brotli sayesinde sıkıştırılmış ve çok daha küçültülmüş boyutunu indirecektir. Brotli’nin özellikle metin tabanlı verileri sıkıştırmak için tasarlandığını unutmamak önemlidir.
Brotli, Google mühendisleri trafaındna ihtiyaçları karşılamak adına geliştirilmiş kayıpsız bir veri sıkıştırma algoritmasıdır. LZ77 kayıpsız sıkıştırma algoritması, Huffman kodlaması ve 2. dereceden içerik modellerinin kombinasyonlarından oluşmuştur diyebiliriz. Brotlinin ana amacı web sunucuları ve içerik dağıtım ağları (CDN) tarafından HTTP içeriğini sıkıştırmak ve internet sayfalarının çok daha hızlı açılmasını sağlamak için kullanılır. En çok kullanılan bir diğer sıkıştırma algoritması olan Gzip‘e karşı oluşturulmuş ve genel itibarıyla tüm önemli web tarayıcılar tarafında da desteklenmektedir. Gzip’ten çok daha iyi sıkıştırma sağladığı için günümüzde oldukça popülerdir.
Brotli, çalışma prensibi olarak Huffman kodlaması ve entropi yöntemlerini kullanır. Bu yöntemler, verileri sıkıştırırken daha sık karşılaşılan sembollerin daha kısa kodlarla temsil edilmesini sağlar. Sonuç olarak, veriler daha etkili bir şekilde sıkıştırılır ve daha az yer kaplar. Brotli aynı zamanda blok sıkıştırma özelliğine sahiptir. Bu, veriyi küçük bloklara ayırarak sıkıştırma işlemini daha verimli hale getirir. Blok sıkıştırma, büyük dosyaların daha hızlı işlenmesini sağlar.
Brotli’nin avantajları arasında daha iyi sıkıştırma oranları, hızlı sıkıştırma ve açma işlemleri, veri transferi maliyetlerinin azalması ve web performansının artması bulunur. Bu nedenle, Brotli, web geliştiricileri için önemli bir araç haline gelmiştir.
Web tarayıcıları ve sunucuları, Brotli’yi desteklemeye başlamış ve bu da daha fazla web sitesinin bu teknolojiyi kullanmasını teşvik etmiştir. Sonuç olarak, Brotli’nin web dünyasındaki etkisi giderek büyümektedir. Genel itibarıyla baktığımızda %95 oranında tarayıcılar tarafından desteklenmektedir. Brotli, web sitelerinin hızını artırmak ve veri transferini optimize etmek için kullanılır. Mobil uygulamalar, API’ler ve daha fazlası da Brotli’yi kullanabilir.
Brotlinin ne olduğundan bahsetmişken biraz diğer sıkıştırma algoritmalarından bahsetmek faydalı olabilir.
Sıkıştırma Algoritmaları Hakkında Temel Bilgiler
Sıkıştırma algoritmaları, verilerin boyutunu azaltma işlemi olarak tanımlanır ve günümüzün dijital dünyasında hayati bir rol oynar. Bu algoritmalar, verileri daha küçük boyutlarda depolamamıza veya iletmemize yardımcı olur ve veri transferi, depolama ve işleme maliyetlerini azaltır. Temelde, sıkıştırma algoritmaları, tekrar eden desenleri tanımlayarak veya verileri daha verimli bir şekilde kodlayarak verilerin sıkıştırılmasını sağlar.
İki tür sıkıştırma algoritması yöntemi vardır:
1. Kayıpsız sıkıştırma
Kayıpsız sıkıştırma algoritmaları, verileri sıkıştırırken herhangi bir bilgi kaybına neden olmaz. Veriler sıkıştırılıp açıldığında, orijinal verilere tam olarak geri dönülür. Örnekler arasında Run-Length Encoding (RLE) ve Huffman kodlaması bulunur.
2. Kayıplı sıkıştırma
Kayıplı sıkıştırma algoritmaları, verileri daha küçük boyutlarda saklamak veya iletmek için bazı bilgi kaybını kabul eder. Bu tür algoritmalar, özellikle multimedya verilerinin sıkıştırılmasında yaygın olarak kullanılır. Örnekler arasında JPEG (görüntü sıkıştırma) ve MP3 (ses sıkıştırma) bulunur.
Brotli Sıkıştırma Algoritması Nasıl Çalışır?
Brotli, modern web dünyasının hız ve veri transferi ihtiyaçlarını karşılamak amacıyla geliştirilmiş güçlü bir sıkıştırma algoritmasıdır. Web sayfalarının daha hızlı yüklenmesini ve veri transferinin daha verimli olmasını sağlayarak web performansını büyük ölçüde artırır. Peki, Brotli nasıl çalışır? İşte bu önemli sıkıştırma algoritmasının temel çalışma prensibine biraz daha yakından bakalım.
Huffman kodlaması ve entropi
Yazımızın girişinde Brotli sıkıştırma algoritmasının Huffman kodlaması ve entropi konseptlerine dayandığından bahsetmiştik. Bu konuyu etraflıca ele almak gerekirse Huffman kodlaması, tekrarlanan veri desenlerini tanımlayarak daha sık karşılaşılan sembolleri daha kısa kodlarla temsil etmeyi amaçlar. Bu, veri sıkıştırmasını sağlar çünkü daha sık kullanılan semboller daha az bit kullanır. Entropi ise verinin karmaşıklığını ifade eden bir kavramdır. Verinin ne kadar karmaşık olduğu, veriyi ne kadar iyi sıkıştırabileceğimizi etkiler. Brotli, veriyi sıkıştırırken bu entropi kavramını kullanarak, veriyi daha iyi kodlayabilir ve daha küçük boyutlarda saklayabilir.
Bunun yanı sıra Brotli blok sıkıştırma ve metin sıkıştırma gibi iki farklı modda sıkıştırma özelliğine sahip.
Blok sıkıştırma ve metin sıkıştırma
Blok sıkıştırma: Bu modda, veri belirli boyutlarda bloklara ayrılır ve her blok ayrı ayrı sıkıştırılır. Bu, büyük dosyaların daha hızlı işlenmesini sağlar ve hızlı erişim için idealdir.
Metin sıkıştırma: Bu modda, metin verileri özel olarak tasarlanmış bir sıkıştırma algoritması kullanılarak sıkıştırılır. Metin sıkıştırma, özellikle web sayfalarının metin içeriği için etkilidir ve daha yüksek sıkıştırma oranları sağlar.
Brotlinin ne olduğu, nasıl çalıştığı, hangi konseptleri etraflıca konuştuk, isterseniz gelin şimdi diğer sıkıştırma algoritmalarından farklarına yakından bakalım.
Brotli’nin GZIP ve Diğer Sıkıştırma Algoritmalarına Karşı Avantajları
Web dünyasında hız ve veri transferi her zamankinden daha kritik hale geldi. Kullanıcılar, web sayfalarının hızlı yüklenmesini beklerken, işletmeler de veri transferi ve depolama maliyetlerini minimize etmek istiyor. İşte bu noktada Brotli sıkıştırma algoritması devreye giriyor. Brotli, çeşitli avantajlarıyla web performansını ve veri yönetimini önemli ölçüde iyileştirir.
Daha iyi sıkıştırma oranları
Brotli’nin belki de en dikkat çekici avantajlarından biri, daha iyi sıkıştırma oranları sunmasıdır. Yani, aynı veriyi diğer sıkıştırma algoritmalarına göre daha küçük boyutlarda saklayabilir veya iletebilirsiniz. Bu, özellikle yüksek hacimli veri transferi gerektiren web siteleri ve uygulamalar için büyük bir avantajdır.
Daha iyi sıkıştırma oranları, web sayfalarının daha hızlı yüklenmesini sağlar. Çünkü daha küçük veri boyutları, verilerin daha hızlı indirilmesi anlamına gelir. Ayrıca, bu avantaj, düşük bant genişliği olan bağlantılar üzerinde web sitelerinin daha iyi performans göstermesine de katkı sağlar.
Squash Benchmarks’ın çok güzel bir araştırma yapmış, bu araştırma özelinde genel itibariyle özeti şöyle:
- Brotli, her sıkıştırma düzeyinde daha iyi bir sıkıştırma oranına sahip. (yani daha küçük sıkıştırılmış dosyalar üretir).
- GZIP çoğu zaman Brotli’yi hız açısından yense de, sıkıştırdığınız seviye, göreceğiniz sonuçlara etki eder.
Diğer tekniklerle olan kıyaslamalarına bakalım:
- Gzip: Gzip, web sunucuları ve tarayıcılar arasında yaygın olarak kullanılan bir sıkıştırma algoritmasıdır. Ancak Brotli, Gzip’e göre daha iyi sıkıştırma oranları sunar. Özellikle metin tabanlı verilerde (HTML, CSS, JavaScript gibi) Brotli, Gzip’e göre daha etkilidir.
- Deflate: Deflate, sıkıştırma için oldukça yaygın bir algoritmadır ve Gzip’in temelini oluşturan bir yöntemdir. Brotli, Deflate’e göre daha iyi sıkıştırma oranları sunar ve daha hızlı işlemler gerçekleştirir.
- Zstandard (Zstd): Zstandard, yüksek performanslı bir sıkıştırma algoritmasıdır ve Brotli ile benzer sıkıştırma oranlarına sahip olabilir. Ancak Brotli, metin verileri için özellikle daha etkilidir ve web sayfalarının hızlı yüklenmesine katkıda bulunabilir.
- LZ77 ve LZ78 Algoritmaları: Brotli, LZ77 ve LZ78 algoritmalarını temel alır ve bu algoritmaların optimize edilmiş bir versiyonunu sunar. Bu, Brotli’nin veriyi daha iyi sıkıştırmasına yardımcı olur.
- JPEG ve MP3: Brotli, multimedya verileri için kullanılan özel sıkıştırma algoritmalarına göre daha az veri tasarrufu sağlar. Bu nedenle, JPEG (görüntü sıkıştırma) ve MP3 (ses sıkıştırma) gibi multimedya dosyaları için özel algoritmalar tercih edilir.
Brotli’nin diğer sıkıştırma algoritmalarına göre %20 ila %30 arasında daha iyi sıkıştırma oranları sağladığı için web performansını ve veri transferini önemli ölçüde artırabilir. Ancak kesin sıkıştırma oranları, kullanılan verinin türüne, boyutuna ve içeriğine bağlı olarak değişiklik gösterebilir.
Brotli sürümlerini ve iyileşmelerini Github’da kontrol edebilirsiniz.
Hızlı sıkıştırma ve açma işlemleri
Brotli, sıkıştırma ve açma işlemlerini son derece hızlı bir şekilde gerçekleştirir. Bu, web sunucularının ve tarayıcıların verileri hızlı bir şekilde sıkıştırmasını ve açmasını sağlar. Kullanıcılar, web sayfalarını hızlı bir şekilde görüntüleyebilirken, sunucular da veri sıkıştırma ve açma işlemlerinde yüksek performans elde edebilirler.
Hızlı işlemler, özellikle canlı veri transferi gerektiren uygulamalarda, video akışlarında ve oyun sunucularında önemlidir. Brotli’nin hızlı işlemleri, bu tür uygulamaların daha düşük gecikme süreleri ve daha hızlı tepki süreleri sunmasına yardımcı olur.
Veri transferi ve depolama tasarrufu
Brotli, veri transferi ve depolama maliyetlerini önemli ölçüde azaltır. Daha küçük veri boyutları, verilerin hızlı bir şekilde iletilmesini ve daha az bant genişliği kullanılmasını sağlar. Bu, web siteleri ve uygulamaları için hem maliyet tasarrufu hem de daha iyi performans anlamına gelir.
Ayrıca, Brotli, veri merkezlerinde ve bulut tabanlı hizmetlerde de önemli bir rol oynar. Daha az depolama alanı gerektirir, bu da veri merkezi maliyetlerini düşürür ve yeşil veri merkezi girişimlerine katkıda bulunur.
Brotli Lullanılıp Kullanılmadığını Nasıl Test Ederim?
Sitenizde brotli sıkıştırma yönteminin var olup olmadığını kontrol etmenin birden fazla yolu bulunuyor. Ben burada sizlere iki farklı yöntemini gösteriyor olacağım.
İlk olarak DevTools aracılıyla kontrollerimizi sağlayabiliriz.
İlgili sayfaya girdiğinizde “incele” kısmına girdikten sonra DevTools açılacak.
Sağ tarafta açılacak bir pencerede üst kısımda “network” sekmesini göreceksiniz.
Network ekranına girdiğimizde sol taraftaki istek listesinden sayfanızın URL’i seçmeniz gerekiyor akabinde “Headers” menüsü altında “Content-Encoding: br” yazıyorsa sitenizde brotli sıkıştırma yöntemi kullanılıyor demektir.
Diğer bir yöntem ise üçüncü parti tool kullanarak testlerimizi gerçekleştirmektir. https://www.giftofspeed.com/gzip-test/ adresine girip, URL kısmına test etmek istediğiniz adresi yazarak sitenin brotli olup olmadığını kontrol edebilirsiniz.
Aşağıdaki ekranda kriko.blog adresinin sıkıştırma yönteminin testi yapılmıştır. Şu an için gzip kullandığını, ne kadar sıkıştırma yapıldığını vs. görebilirsiniz.
Brotli’yi Nasıl Aktifleştirebilirim/Kurabilirim?
Brotli’yi kurmak ve etkinleştirmek, kullandığınız web sunucusuna bağlı olarak değişebilir. İşte bazı popüler web sunucuları için Brotli’nin nasıl kurulacağına dair genel yönergeler:
Apache Web Sunucusu için Brotli Kurulumu:
Apache web sunucusunda Brotli’yi etkinleştirmek için aşağıdaki adımları izleyebilirsiniz:
mod_brotli
eklentisini etkinleştirin. Apache’in yapılandırma dosyasında (genellikle httpd.conf
veya apache2.conf
olarak adlandırılır) aşağıdaki satırı ekleyin:
LoadModule brotli_module modules/mod_brotli.so
mod_brotli
‘yi etkinleştirdikten sonra, .htaccess dosyanızda Brotli sıkıştırma kurallarını yapılandırabilirsiniz. Örnek bir .htaccess dosyası aşağıdaki gibi görünebilir:
<IfModule mod_brotli.c>
AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascript application/x-javascript application/json application/xml
</IfModule>
Nginx Web Sunucusu için Brotli Kurulumu:
Nginx web sunucusunda Brotli’yi etkinleştirmek için aşağıdaki adımları izleyebilirsiniz:
Nginx yapılandırma dosyanızı düzenleyin (genellikle /etc/nginx/nginx.conf
veya /etc/nginx/sites-available/default
gibi bir dosyadır) ve aşağıdaki satırları ekleyin:
gzip on;
gzip_static on;
gzip_comp_level 6;
gzip_min_length 1000;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/json application/xml;
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css text/xml text/javascript application/javascript application/x-javascript application/json application/xml;
Nginx’i yeniden başlatın:
sudo service nginx restart
Sonuç olarak, Brotli sıkıştırma algoritması, web dünyasının hız ve veri yönetimi ihtiyaçlarını karşılamada kritik bir rol oynuyor. Web sayfalarının daha hızlı yüklenmesi, veri transferinin daha verimli olması ve maliyetlerin azalması için Brotli’yi kullanmak hem web geliştiricileri hem de kullanıcılar için büyük avantajlar sağlıyor. Bu nedenle, Brotli’yi kullanma ve yapılandırma konusunda dikkatli ve bilinçli olmak önemlidir.
Yeni Core Web Vitals MetriğiInteraction To Next Paint ile ilgili bilmeniz gerekenleri sizler için derledik. Keyifli okumalar!