Sıkıştırılmış Dağıtım

Çı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.

Bu kararı verebilmek için size yardımcı olacak iyi bir sayfa Martin Kiff'in mod_gunzip hakkındaki belgesidir: http://www.innerjoin.org/apache-compression/howto.html

mod_gzip

Derleme ve Kurulum

mod_gzip'i başarılı bir şekilde derlemek için Makefile'ı düzenlemeniz ve apxs'e doğru yolu göstermeniz gerekir.

$ make
# make install

Örnek Yapılandırma

Aşağıdakini /usr/local/apache/conf/httpd.conf'un içine koyunuz:

Örnek 1.6. /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

mod_gunzip

Kaynak paketini indirin

Adres: http://www.oldach.net/mod_gunzip.tar.gz

Derleme ve Kurulum

$ tar -xvzf mod_gunzip.tar.gz
$ cd mod_gunzip-2

$ /usr/local/apache/bin/apxs -i -a -c -lz mod_gunzip.c

Örnek Yapılandırma

Aşağıdakini /usr/local/apache/conf/httpd.conf'un içine koyunuz:

Örnek 1.7. /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>