Mempercepat Loading WordPress dengan HTTP Compression
Pada pembahasan yang telah lalu telah dijelaskan sedikit mengenai dua macam kompresi HTTP (HTTP compression) yang bisa dilakukan pada file CSS. Di situ dijelaskan mengenai cara mengkompres file CSS menjadi lebih kecil ukuran file-nya. Jika file CSS dapat kita mampatkan ukuran file-nya, maka file html pun dapat juga kita kompress dengan metode yang sama. Di pembahasan ini akan dijelaskan mengenai dua metode kompresi HTTP yang umum digunakan. Namun sebelumnya mari kita mengulas sedikit mengenai pentingnya kompresi terkait performa atau kecepatan loading suatu situs/blog.
Saat kita mengakses sebuah halaman website/blog, maka peramban akan mengirimkan permintaan kepada server tempat web tersebut berada. Server kemudian akan merespon permintaan peramban dan mulai mencari file-file yang dibutuhkan. Jika file-file yang dibutuhkan telah ketemu, maka server akan mengirimkan file-file tersebut ke peramban untuk ditampilkan pada pengguna.

Gambar 1. HTTP request dan Response tanpa kompresi
Katakanlah file tersebut berupa file HTML yang berukuran 100 KB. Setiap kali file html tersebut dicari oleh server dan kemudian dikirim ke peramban, di situ terdapat jeda waktu menunggu bagi peramban untuk dapat menerima file HTML itu. Semakin besar ukuran file HTML yang diunduh, maka semakin lama pula jeda waktu menunggu bagi peramban agar dapat mengunduh file HTML tersebut. Belum lagi waktu yang dibutuhkan untuk mengunduh file sebesar 100 KB, tentunya itu bukanlah hal yang efektif dan efisien.

Gambar 2. HTTP request dan Response dengan menggunakan kompresi
Berbeda halnya jika file HTML tersebut dikompres terlebih dahulu oleh server sebelum dikirim ke peramban. Peramban hanya akan menunggu sebentar saja sebelum mengunduh file HTML tersebut. Di samping itu karena file HTML-nya sudah dikompress oleh server, maka peramban pun tak perlu berlama-lama dalam mengunduhnya. Hasilnya? Kita dapat berselancar dengan nyaman menggunakan provider terlemot sekalipun semacam IM2 broom dan Smart :D (kenyamanan di sisi pengguna), dan menghemat bandwidth di sisi pemilik website/blog.
Saat ini terdapat dua macam metode kompresi HTTP yang umum digunakan, yaitu (1) mod_deflate dan (2) mod_gzip. Keduanya bekerja pada server apache. Dibandingkan dengan mod_deflate, mod_gzip memberikan rasio kompresi HTTP yang lebih besar. Artinya mod_gzip lebih baik daripada mod_deflate.
Syarat-syarat untuk dapat menggunakan metode kompresi HTTP di atas adalah peramban dan server harus mendukung. Khusus untuk mod_gzip, PHP yang digunakan harus versi 4.0.6 hingga terbaru. Untuk dapat mengetahui versi PHP pada server yang kita gunakan, buatlah sebuah file php (contoh: info.php), kemudian ketikkan kode snippet berikut:
<?php phpinfo(); ?>
Kemudian save. Uploadlah file tersebut ke server yang kita gunakan. Terserah dimanapun direktorinya. Kemudian panggil-lah melalui peramban yang kita gunakan. Contoh: http://nama-domain.com/direktori/info.php
Di situ akan terlihat informasi lengkap PHP yang ada di server. Kita bisa mencari fitur-fitur yang terintegrasi di dalamnya.
Beberapa macam metode kompresi yang umum digunakan
-
Kompresi HTTP menggunakan mod_deflate
Caranya adalah, cukup dengan menambahkan kode berikut pada file .htaccess di root direktori domain kita.
# kompress semua text dan html: AddOutputFilterByType DEFLATE text/html text/plain text/xml # atau kompress berdasarkan ekstensi file: <files *.html *.php *.css> SetOutputFilter DEFLATE </files>
-
Kompresi HTTP menggunakan mod_gzip
Caranya adalah dengan menambahkan kode snippet berikut di bagian paling atas file html:
< ?php ob_start( 'ob_gzhandler' ); ?>
atau:
< ?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) { ob_start("ob_gzhandler"); } else { ob_start(); } ?>Tambahkan/sisipkan salah satu kode tersebut di atas file HTML. Untuk pengguna WordPress, kode di atas bisa diletakkan di bagian paling atas header.php. Contohnya:
< ?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) { ob_start("ob_gzhandler"); } else { ob_start(); } ?> <!-- bagian paling atas header.php --> < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>> </html>Perlu diperhatikan, bahwasanya penggunaan kode mod_gzip di atas YANG DISISIPKAN DI BAGIAN ATAS HEADER.PHP adalah khusus bagi pengguna theme yang sederhana (tanpa template halaman). Saya sudah pernah mengulas tentang cara membuat template halaman.
Jika kita memakai template halaman (page template), maka tidak direkomendasikan untuk menyisipkan kode mod_gzip di bagian header.php. Karena akan merusak kompresi. Solusinya adalah dengan menyisipkan kode mod_gzip tersebut pada file index.php, single.php, page.php, archive.php, 404.php, dan search.php, dan JANGAN SISIPKAN pada header.php. Contohnya:
< ?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) { ob_start("ob_gzhandler"); } else { ob_start(); } ?> <!-- Bagian atas file single.php --> < ?php get_header(); ?>Jika kita memakai template halaman, maka kode mod_gzip disisipkan dengan cara sebagai berikut:
< ?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) { ob_start("ob_gzhandler"); } else { ob_start(); } /* Template Name: Nama Template halaman */ ?>
Kesimpulan
Sangat direkomendasikan untuk mengompres halaman website/blog kita demi kenyamanan pengunjung. Tentunya kita senang seandainya blog kita terasa cepat jika diakses, bukan? Cara yang terbaik dan termudah untuk mengompress adalah dengan menggunakan mod_gzip. Mungkin anda ingin tahu perbandingan ukuran halaman sebelum dan sesudah dikompres. Untuk mengeceknya, silahkan cek situs/blog anda di online gzip test, atau dengan menggunakan addons firefox seperti Web Developer Toolbar dan Live HTTP Headers
Referensi:
- Compress Your Web | Desilva.biz
- How to Optimize your Site With Gzip Compression | Betterexplained.com
- Use PHP to Gzip and Optimize CSS Files | Ethanandjamie.com
- PHP CSS Compressor | Ibloomstudios.com
Mantap tks infonya
akhirnya yang saya tunggu-tunggu up juga … hehehe
begini mas … yang waktu itu halaman error saya itu ternyata dikarenakan pemakaian template page ya … hahaha … baru ngerti saya … mana gak bikin bingung … terima kasih mas Adi, saya mau coba lagi …
oya saya mau tanya sedikit:
- apakah pemakaian teknik kompresi ini dapat kita gabung-gabungkan?
- pada control panel hosting ada fitur kompresi http, apakah berbeda? kalau berbeda, dimana perbedaanya?
ah masih banyak yang sebenarnya mau saya tanyakan mengenai teknik kompresi ini … tetapi itu saj dululah … :D
Maksudnya digabung bagaimana ya?
Control panel hosting biasanya mendukung kedua metode kompresi (mod_gzip maupun mod_deflate), tapi biasanya fitur yang ada pada cPanel adalah fitur yang mengakses .htaccess, sehingga kesimpulan sementara saya, fitur yang ada pada cPanel menggunakan metode mod_deflate. CMIIW.
saya memakai metode gzip juga tetapi melalui .htaccess … apakah ada perbedaan hasilnya mas?
Kalau menggunakan .htaccess bukannya itu metode mod_deflate mas? Setahu saya gzip menggunakan fungsi php. Untuk perbedaannya bisa mas Ardi cek di Test Gzip. Mungkin saja hasilnya sama-sama terkompresi, tapi biasanya metode gzip akan mengkompres file hingga rasio 75-90 %
Wong koyo aku (wordpress.com-ers) opo yo mudeng koyo ngene :)
Lha punya sampeyan ini dikompress gak mas? Kok bisa ngebut sih :) Apa gara-gara pake hosting yang mahalan?
Jelas dikompress lah, kan ga lucu, bikin tutorial, tapi ga mencontohkannya :)
Ngebut ya? Hmm mungkin salah satunya (dari sekian banyak) ya itu…
saya dah coba mas pakai cara di atas … tetapi kok malah ningkat total ukuran sedotan bandwidth servernya … jadi bingung saya neh …
terus ada tulisan
di atas halaman (kalau kita matikan style dari browser) … mohon pencerahannya … :)
saya coba ganti dengan metode .htacces … dilihat dari hasilnya sama seperti dengan metode php di atas … tetapi dengan cara ini tidak mengurangi request ke server … kalau dengan metode php mas Adi itu sebenarnya yang lebih baik …
Kok bisa ya? :thinking:
Saya baru tau kejadian seperti ini. Apakah mas Ardi udah menyisipkan kodenya dengan benar?
Atau bisa dicek di sini mas. Di situ akan ada penjelasan apakah situs kita sudah terkompress atau belum.
Kalau boleh tau server yang mas Ardi gunakan berapa versi PHPnya?
Mengenai HTTP request, metode kompressi sama sekali tidaklah mengurangi request ke server, karena ia berfungsi hanya mengkompress halaman HTML yang dihasilkan setelah proses request.
browser » request HTTP » server » query database » file HTML » Dikompress » Dikirim ke browser.
FYI, Response header dari blog.sumberide.com adalah:
Metode kompresi dg mod_gzip sukses… :)
yups … tetapi saya pakai metode .htaccess :D
Mas Rismaka dah kembali ke khittahnya. Bahasannya bukan untuk beginner…. :)
Bang Dje terlalu berlebihan :)
Khittah saya adalah dari newbie, dan selamanya akan terus menjadi newbie :)
mas Adi … hati-hati kalau pasang adsense ditambahkan
padahal kontennya berbahasa Indonesia … sewaktu-waktu ada pemeriksaan dari google … sudah banyak yang dibanned oleh google … yang diblokir adalah domain utama, jadi selamanya domain tersebut tidak dapat memasang adsense lagi … :)
Terima kasih telah mengingatkan mas :)
Adsense itu cuma hiasan aja kok. Mungkin nanti setelah saya mendapat sponsor tunggal, saya akan singkirkan adsense tsb.
Mas, maaf agak menyimpang dari topik diatas, saya mohon pencerahannya custom sitemap, masalahnya jika mengikuti yang standar tampilan kurang familiar, maunya seperti yang saat ini ditampilkan http://www.rismaka.net :D, terima kasih.
Maksudnya bagaimana mas? Custom sitemap yang mana?
1. Yang saya maksud pada topnav rismaka.net -home-guestbook-sitemap- tampilannya sederhana tapi user familiar.
2. Saya sudah terapkan kompressi HTTP-nya tapi yang terjadi malah blog saya tidak bisa diakses.
muncul pesan error :
Content Encoding Error
The page you are trying to view cannot be shown because it uses an invalid or unsupported form of compression.
Analisa saya template tidak support ? agak aneh sih…tolong dong mass…
Setelah saya hapus HTTP compress-nya blog bisa diakses mas dan sekarang sudah jalan. Saya tunggu pencerahannya mas, oh ya saya posting di MWN, tapi sepertinya
dimwn gak masalah ya, [ maaf mas kepencet ]
1. Untuk sitemap / daftar isi tsb saya membuatnya dg modifikasi PHP. Saya berencana akan menuliskannya nanti, tunggu saja.
2. HTTP compression itu tidak jalan, mungkin karena dipasang di salah satu page template. Silahkan dibaca lagi postingan tsb di bagian akhir. Pada kasus itu kode PHP tidak disispkan di bagian header.php, tapi di bagian index.php, single.php, page.php, archive.php, dlsb. Utk page template, di situ udah dijelasin bagaimana cara menuliskannya.
MWN itu HOSTING ya? Saya rasa hampis semua hosting di indonesia sudah suport kompresi ini mas. Coba deh cek ulang penyisipan kode tsb di atas.
sekedar tambahan mas, dijalankan pada server local tidak ada masalah, kesimpulan jadi berubah…bukan template tetapi kemungkinan servernya MWN yg gak support
Hmm begitu ya.. saya kurang tahu juga mengenai MWN, karena tidak pernah mencobanya. Coba dicek dg mengupload file PHP yang berisikan kode berikut:
Terus panggil file tsb. Di situ nanti akan diperlihatkan spesifikasi server MWN, apakah mendukung atau tidak.
Ya nih mas sepertinya MWN gak support g_zip ;
Wah apes deh mas, ternyata hanya support mod_deflate aja…thanks pencerahannya.
kak risma terimakasih y tutorialnya, saya dah mencobanya, trus dah di tes hasilnya:
Web page compressed? Yes
Compression type? gzip
Size, Markup (bytes) 99,501
Size, Compressed (bytes) 11,519
Compression % 88.4
gimana kak msh ada yg kurang gak?
Size, Markup (bytes) 99,501
Size, Compressed (bytes) 11,519
artinya apa kak?
Artinya ukuran sebelum dikompress adalah 99,501 bytes, setelah dikompress menjadi 11,519 bytes. Rasionya jadi 99,501/11,519 X 100%
Yup. It’s work. Perfecto :)
kak kok file yg ingin di kompres kecil cuma 99,501 bytes perasaan filenya kb.
99,501 bytes itu = 99 kb apa 99 bytes ??
99.501 bytes itu artinya 99 ribu koma 501 byte. Atau 99,5 KB
Ide bagus… kayaknya perlu dicoba nich… tengkiyu infonya.
Busyeet… aku ga ngerti mas.. ilmu ngeBlogku belom nyampe sono.. tapi pasti ntar aku cba deh.. doa’in ya..
lha metode yang dipost satunya mode gzip dipanggil pakai tuh gimana..masih nyambungkah ama post yg ini mas???
maaf belum nyambung bgt
upps sorry ni modenya
link rel=”stylesheet” href=”/css.php” type=”text/css” media=”screen”
Saya sudah coba tips nya mas dan memang bekerja dengan baik saya memakai mode_gzip dan memasang kode tersebut di index.php dan single.php, terasa sekali perbedaannya. Tapi ada sedikit masalah yaitu title dari blog saya yang dihasilkan oleh plugin All in One SEO pack tidak bekerja sama sekali, alias hilang title nya. Apa mungkin ini karena themes saya yang tidak support…mohon bantuannya mas…Thx
SOlusinya adalah mengganti sniplet title tersebut dengan yang sudah dimodif mas. Bisa dilihat di sini:
http://www.rismaka.net/2009/05/sniplet-untuk-tag-judul-yang-seo-friendly-update.html
saya coba dulu sob.. makasih udah share infonya.. nanti kalau ada kendala, aku mampir lagi ya untuk tanya² hehehe
makasih
[...] http://www.rismaka.net/2009/06/mempercepat-loading-wordpress-dengan-http-compression.html [...]
wah ilmu yang berguna, kalau untuk plafont blogspot ada ngga gan, biar loading lebih cepat.
Saya ga tau klo blogspot gan
[...] Perlu diketahui bahwa kode tersebut akan selalu ter-overwrite setiap kali update WordPress. Alternatifnya dengan meletakkannya pada template, yang bisa dibaca selengkapnya di blog Rismaka. [...]
Mau tanya juga ni.
Kalau untuk blogspot bisa gak ya boz?
Thanks
Tidak bisa. metode http compressin ini memerlukan server apache yg mndukung PHP 4.1 agar bisa bekerja, sementara blogspot tdk mndukung apache di servernya.
mas kalo di bythost mendukung BZip2 Support bukan gzip cara gunainnya gimana..???
mas kok di atas header website saya ada tulisan yg dikasih sih mas gimana cara ngilanginnya..??? coba dh ke website saya…
lintaskomputer,
Byethost yang gratisan memang tidak support gzip compression, karena servernya masih menggunakan PHP 4. Dan tulisan berupa kode gzip di blog anda karena server anda tidak mendukung kompresi.
bisa kog mas skg ,saya juga pake
[...] kasih Buat Blog Mas Alwi , Adi Bakar , Rismaka atas artikel yang di muat dapat memberikan pencerahan bagi saya. Related [...]
[...] sampai 80%. Saya sudah coba dari beberapa tutorial yang di suguhkan oleh senior blogger seperti mas Rismaka, Pak Alwi dan masih banyak lagi yang saya baca baik bahasa inggris atau Indonesia tetapi hasilnya [...]
siipp.. makasih buat infonya..
[...] Perlu diketahui bahwa kode tersebut akan selalu ter-overwrite setiap kali update WordPress. Alternatifnya dengan meletakkannya pada template, yang bisa dibaca selengkapnya di blog Rismaka. [...]
wah keren..thanks infonya
prkenalkan ana anwar wong jogja. Anwar says: hebat mas, walopun ane gak nyambung. Dr dulu ana panto trus blognya mas risma, mkin jos aja. Ijin simak sama ambil ilmu, skalian sy mau blajar..
prkenalkan ana anwar wong jogja. Anwar says: hebat mas, walopun ane gak nyambung. Dr dulu ana panto trus blognya mas risma, mkin jos aja. Ijin simak sama ambil ilmu, skalian sy mau blajar.. (kog tadi ada tulisan duplicat comment found dst ktka ana mau submit knp tu?)
wuih ampe mempertimbangkan kompresi http segala, hebat euy
akan saya coba pada blog saya, makasih infonya y
wow kereeen. gw coba deh di blog gw. makasih infonya
widih… pake kompresi segala… nice info gan….
Terima kasih mas, saya akan coba karena saya merasakan blog saya boros bandwidth, bulan juli ini habis 10 Gb bandwidth, semoga dengan cara ini bisa irit.
Halo Rismaka, info ini sangat berguna, saya sudah coba di blog saya tapi setelah saya cek menggunakan firebug, “enable compression” masih berwarna merah yang artinya masih sangat bisa di perbaiki.
saya menggunakan wp 3.0.1 dan Elegant Theme The Source, tolong di bantu ya…
Sekali lagi terima kasih, info yang bagus. 2 thumbs UP