Latar belakang
Browser sekarang ini seperti Opera 9, Firefox 1.5, IE 6 sudah mendukung pengiriman data terkompresi (compressed). Gunanya adalah untuk mempercepat pengiriman data dari web server ke browser. Biasanya kompresi yang digunakan adalah gzip. Kompresi ini tidak disarankan untuk developer ketika membuka websitenya dari local area network, karena speed di dalam LAN itu sendiri sangat cepat, sehingga dengan di tambahkan nya kompresi di server dan dekompresi di bagian client, akan membuat proses sedikit lebih lambat. Tetapi hal ini jika digunakan untuk transfer data antar internet (bahkan dengan koneksi fiber optic sekalipun) akan membuat koneksi lebih cepat sekitar 10 – 30 persen.
Berikut saya akan jelaskan cara merubah setting apache anda supaya menggunakan mod_deflate, sehingga untuk setiap browser yang datang dan bisa menggunakan gzip sebagai metode pengiriman, akan di kirim dengan gzip. Apache mendeteksinya dari header: accept-content: gzip;
Setting Apache
Buat file setting tambahan
Jika anda menggunakan XAMPP sebagai default instalasi file anda, anda akan melihat ada folder /xampp/apache/conf/extra Anda bisa meletakan file baru ini di sana. Saya menggunakan nama file httpd-compress.conf sebagai nama filenya.
Pada CentOS taruh file ini pada /etc/httpd/conf/conf.d/httpd-compress.conf dan config akan dinyalakan otomatis pada startup apache.
Ada dua macam setting mod_deflate.
Kompress semua file yang akan di tranfer
Copy file di bawah ini ke dalam file yang baru saja anda buat
# Insert filter SetOutputFilter DEFLATE # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine # BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48 # the above regex won't work. You can use the following # workaround to get the desired effect: BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI \ \.(?:gif|jpe?g|png)$ no-gzip dont-vary # Make sure proxies don't deliver the wrong content Header append Vary User-Agent env=!dont-vary
Kompress file2 tertentu saja
Saya membuat beberapa list di bawah ini , file2 yang biasanya di compress. File2 seperti mp3 dan jpeg akan error biasanya kalo di kompress, sehingga saya hanya kompress file yang bentuknya txt
AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE application/x-httpd-fastphp AddOutputFilterByType DEFLATE application/x-httpd-eruby AddOutputFilterByType DEFLATE text/html
Load file setting tambahan
Pada server windows anda harus menambahkan baris ini pada httpd.conf agar memberitahu apache supaya membaca config dari file lain. Pada CentOS anda dapat melewatkan baris yang ini, karena semua file dalam conf.d akan selalu di load.
# mod-deflate by rickyok Include conf/extra/httpd-compress.conf
Nyalakan mod_deflate
Dan tentu saja supaya mod itu dapat bekerja, anda harus mengaktifkan terlebih dahulu dengan menghapus tanda # di depan ini. Cari baris di bawah ini di httpd.conf dan harus tanda # di depannya. Jika baris ini tidak ada di httpd.conf anda, kemungkinan besar apache anda belom support mod_deflate secara default. Anda harus compile ulang apache anda, atau download mod_deflate.so atau mod_deflate.dll
LoadModule deflate_module modules/mod_deflate.so