Günümüz internet dünyasında, hem trafik hem de arama motorları açısından, inşa ettiğimiz web sitelerinin kodlarını mümkün olduğunca sıkıştırmak gerekiyor. Google gibi arama motorları da kodları sıkıştırdığımız takdirde, Pagespeed üzerinde web sitelerimize daha yüksek puan veriyor. Ayrıca kodlarımızı ve görsellerimizi ne kadar fazla sıkıştırırsak trafiğimizde o kadar rahatlıyor ve ziyaretçiler de daha az trafik tüketmiş oluyor.
Sıkıştırma işlemleri özellikle Linux Hosting ve WordPress Hosting kullanıcı için önem arz ediyor.
Bu işlemleri genelde mod_gzip dediğimiz modül ile yapmaktayız. Fakat brotli ismi verilen modül sayesinde sıkıştırma işlemlerimizi daha performanslı hale getirebiliriz.
Mod Brotli Nedir?
Mod_brotli tıpkı mod_gzip gibi bir sıkıştırma aracıdır. Sıkıştırma işlemi ile; ziyaret edilen web sayfası ziyaretçinin tarayıcısına gönderilmeden önce sayfayı oluşturan tüm istemci taraflı kodlar ve görseller (html, java, css, jpg, png vb.) sunucu tarafından sıkıştırılır ve sonrasında tarayıcıya bu sıkıştırılmış dosya gönderilir. Gzip sıkıştırma işlemi de aynı işleve sahiptir, fakat mod_brotli, mod_gzip’e göre daha iyi sıkıştırma sağlar.
Brotli vs Gzip
mod_brotli ve mod_gzip arasındaki performans farkları şu şekildedir;
- HTML dosyaları gzip’ten %21-25 daha küçüktür.
- CSS dosyaları gzip’ten %17-20 daha küçüktür.
- Brotli ile sıkıştırılmış Javascript dosyaları gzip’ten %10-20 daha küçüktür.
Mod_brotli Kurulumu
Bu makalemizde, mod_brotli kurulumunu Centos 7 ve Ubuntu sunucu üzerine gerçekleştireceğiz. Daha sonraki yazılarımızda mod_brotli kurulumunu destekleyen paneller üzerine de nasıl kurulumunun yapılacağını anlatacağız.
Gereksinimler:
- Centos 7 veya Ubuntu Server
- root veya root izinlerine haiz bir kullanıcı
- Apache Web Sunucusu
- Apache Web Sunucunun https olarak çalışması
- Brotli ve mod_brotli kurulumu
Kurulum
Ubuntu;
apt-get install brotli
Centos;
yum install cmake -y
wget https://github.com/google/brotli/archive/master.zip
unzip master.zip
cd brotli-master
Daha sonra indirdiğimiz dosyayı derleyelim;
mkdir out && cd out
../configure-cmake
make
make test
make install
Kurulumu doğrulamak için Brotli versiyonu kontrolü yapabiliriz.;
brotli --version
brotli 1.0.4
Yardım için;
brotli --help

Brotli kurulumu tamamsa, apache işlemleri için devel paketini kurmamız gerekiyor;
Ubuntu;
apt-get install apache2-dev
Centos;
yum install httpd-devel
Daha sonra, mod_brotli paketini indirip derlememiz gerekiyor;
git clone --depth=1 --recursive https://github.com/kjdev/apache-mod-brotli.git
cd apache-mod-brotli
./autogen.sh
./configure
make
Ubuntu;
install -D .libs/mod_brotli.so /usr/lib/apache2/modules/mod_brotli.so -m 644
Centos;
cp .libs/mod_brotli.so /usr/lib64/httpd/modules/mod_brotli.so -fv
Ubuntu üzerinde işlemleri yapıyorsanız a2enmod kurulumu gerçekleştirmemiz gerekiyor.
cd /etc/apache2/mods-available
echo "LoadModule brotli_module /usr/lib/apache2/modules/mod_brotli.so" > brotli.load
kurulum işlemleri tamamlandı, mod_brotli yapılandırma işlemlerine geçebiliriz.
Mod_Brotli Yapılandırma
Centos;
Favori editörümüz ile brotli.conf dosyasını açalım;
nano /etc/httpd/conf.d/brotli.conf
Ve dosyanın içine aşağıdaki ibareleri yapıştıralım;
<IfModule brotli_module>
BrotliCompressionLevel 10
BrotliWindowSize 22
AddOutputFilterByType BROTLI text/html text/plain text/css text/xml
AddOutputFilterByType BROTLI text/css
AddOutputFilterByType BROTLI application/x-javascript application/javascript
AddOutputFilterByType BROTLI application/rss+xml
AddOutputFilterByType BROTLI application/xml
AddOutputFilterByType BROTLI application/json
</IfModule>
Dosyayı kaydedip çıkalım ve http servisini restart edelim.
systemctl start httpd.service
Ubuntu;
nano brotli.conf
Dosyaya aşağıdakileri kopyalayalım;
<IfModule brotli_module>
BrotliCompressionLevel 10
BrotliWindowSize 22
AddOutputFilterByType BROTLI text/html text/plain text/css text/xml
AddOutputFilterByType BROTLI text/css
AddOutputFilterByType BROTLI application/x-javascript application/javascript
AddOutputFilterByType BROTLI application/rss+xml
AddOutputFilterByType BROTLI application/xml
AddOutputFilterByType BROTLI application/json
</IfModule>
a2enmod’u brotli için aktif edip, servisi yeniden başlatalım;
a2enmod brotli
service apache2 restart
Kurulum işlemleri tamamlandı. https://tools.keycdn.com/brotli-test sayfasından veya header bilginizden mod_brotli’nin çalışıp çalışmadığını kontrol edebilirsiniz.
Brotli compression is supported.
Yapılandırma işlemleri için resmi Apache sayfasından daha fazla detay alabilir ve yapılandırma işlemlerinizi daha fazla detaylandırabilirsiniz.
https://httpd.apache.org/docs/trunk/mod/mod_brotli.html
Sıkça Sorulan Sorular (SSS)
Brotli modülü Gzip’e göre ne kadar performans artışı sağlar?
Yapılan testlere göre HTML, CSS ve JavaScript dosyalarında %10 ila %25 arasında ek sıkıştırma sağlar. Bu da daha düşük bant genişliği kullanımı ve daha hızlı sayfa yükleme süreleri anlamına gelir.
Brotli compression her tarayıcı tarafından destekleniyor mu?
Chrome, Firefox, Edge, Safari ve Opera gibi modern tarayıcılar Brotli desteğine sahiptir. Ancak eski tarayıcılarda yalnızca Gzip desteklenebilir. Bu yüzden çoğu sunucu yapılandırmasında Brotli ile birlikte Gzip de yedek olarak açık bırakılır.
Brotli sıkıştırma seviyesi kaç olmalıdır?
Varsayılan seviye genellikle 5’tir. Maksimum değer 11 olsa da, en yüksek seviyeler CPU tüketimini artırabilir. Sunucunun kaynaklarına göre 6–8 arası önerilir.
Brotli kurulumu Apache dışında Nginx üzerinde de yapılabilir mi?
Nginx için de Brotli modülü mevcuttur. Google tarafından sağlanan brotli kütüphanesi Nginx ile derlenip etkinleştirilebilir.
Brotli sıkıştırması görseller için de geçerli midir?
Brotli genellikle metin tabanlı içerikler (HTML, CSS, JS, JSON, XML) için kullanılır. JPG, PNG gibi görseller zaten kendi sıkıştırma algoritmalarına sahip olduğu için ek bir fayda sağlamaz.
Apache’de Brotli sıkıştırmanın çalışıp çalışmadığı nasıl test edilir?
Header yanıtlarını curl -I -H "Accept-Encoding: br" https://domain.com
komutuyla veya KeyCDN Brotli Test gibi çevrim içi araçlarla kontrol edebilirsiniz.
