Çıktı sıkıştırması için temel olarak mevcut iki modül vardır: mod_gzip ve mod_gunzip. Bu modüller band genişliği azaltımı hedefine ulaşmak için farklı yaklaşımlar kullanır.
mod_gunzip, dosya sistemi üzerinde sıkıştırılmış dosya umar ve eğer tarayıcı sıkıştırılmış veriyle başa çıkamıyorsa onu açar. Yararı, düşük CPU kullanımıdır, çünkü çoğu tarayıcı sıkıştırılmış içerikle başa çıkabilecek yetenektedir. Diğer taraftan, bugünün içeriğinin tümü dinamik olarak sunuluyor. Örneğin, PHP ve bu içeriği sıkıştırılmamış olarak dağıtılacaktır.
mod_gzip, sistemde sıkıştırılmış dosyalara gereksinim duymaz, tüm tanımlanmış içerik dağıtımdan önce sıkıştırılacaktır. Yararı, dinamik olarak oluşturulmuş ve sıkıştırılmış da olan içeriğe sahip olmaktır; diğer taraftan daha yüksek CPU kullanımı gerekir, çünkü her bir isteğin "uçuş sırasında" (on-the-fly) sıkıştırılması gerekir. mod_gzip önceden sıkıştırılmış veriyi de idare edebilir; örneğin index.html.gz olduğu gibi iletilebilir.
Sonuç: İki modülden hangisinin sizin için daha uygun olduğuna dikkatli bir şekilde karar vermelisiniz. Eğer her bir GB için ödeme yapmanız gerekiyorsa ve CPU gücü problem değilse, o zaman mod_gzip sizin için doğru seçim. Eğer cevap süresiyle alakalı sorun varsa (istek ve dağıtım arasındaki gecikme) ve band genişliğiniz sınırsız ve ucuzsa mod_gunzip ihtiyaçlarınızı daha iyi karşılar.
-
mod_gzip'i başarılı bir şekilde derlemek için Makefile'ı düzenlemeniz ve apxs'e doğru yolu göstermeniz gerekir.
Aşağıdakini /usr/local/apache/conf/httpd.conf'un içine koyunuz:
- Örnek 1.5. /usr/local/apache/conf/httpd.conf
-
mod_gzip_on Yes
mod_gzip_can_negotiate Yes
mod_gzip_dechunk Yes
mod_gzip_minimum_file_size 600
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 100000
mod_gzip_keep_workfiles No
mod_gzip_temp_dir /usr/local/apache/gzip
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.txt$
mod_gzip_item_include file \.jsp$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.pl$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^application/x-httpd-php
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include handler ^perl-script$
mod_gzip_item_include handler ^server-status$
mod_gzip_item_include handler ^server-info$
mod_gzip_item_exclude file \.css$
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude mime ^image/.*
Erişim kütüğünüze sıkıştırmanın sonucunu günlüklemek isteyebilirsiniz. Bu,
/usr/local/apache/conf/httpd.conf'daki LogFormat talimatı değiştirilerek yapılabilir.
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" ¬
mod_gzip: %{mod_gzip_compression_ratio}npct." combined
-
-
$ tar -xvzf mod_gunzip.tar.gz
$ cd mod_gunzip-2
$ /usr/local/apache/bin/apxs -i -a -c -lz mod_gunzip.c
Aşağıdakini /usr/local/apache/conf/httpd.conf'un içine koyunuz:
- Örnek 1.6. /usr/local/apache/conf/httpd.conf
-
AddType text/html .htmz
AddHandler send-gunzipped .htmz
Şimdi html dosyalarınızı gzip'leyebilir ve onları örnekteki gibi yeniden isimlendirebilirsiniz:
$ gzip index.html
$ mv index.html.gz index.htmz
Elbette ki tüm bağları htmz'ye değiştirmelisiniz; örneğin, <a href="sayfa.htmz">Herhangi sayfa</a>