Mengaktifkan Kompresi Melalui Function

Written By Rey on Senin, 02 April 2012 | 20.04

Selama semalam saya berusaha mengembalikan performa Blog Reyzha. Kompresi yang saya lakukan dengan mode gzip mengakibatkan plugin andalan saya W3 Total Cache tidak berfungsi. Saya kembali bermain di perpustakaan saya,yaitu Alwi's Blog. Semua tehnik yang ada disana saya coba hingga mengkonvert semua file CSS menjadi php agar bisa dikompres dan digabungkan. Dari situ saya mulai ingin mencoba melakukan hal yang sama pada file-file javascript. Dan hasilnya tidak mengecewakan. Pagespeed saya kembali tanpa bergantung lagi pada plugin cache. Saya menemukan satu pengetahuan baru. Bahwa ternyata mengaktifkan gzip compression melalui file-file yang saya konvert menjadi php belumlah optimal. Dari hasil uji coba melakukan test di GID Network,menyatakan bahwa Web Page Not Compressed. Rupanya cara ini hanya mengkompres file-file CSS dan javascript,tapi belum untuk HTML.Wah,bagaimana ya jika semua usaha yang saya lakukan semalam tidak berhasil? Pasti saya akan libur menulis selama beberapa hari hanya untuk memecahkan masalah ini. Akhirnya dengan berbekal rasa penasaran muncullah keinginan untuk mencoba sesuatu. Dengan satu cara yang sangat simpel yang baru terfikirkan oleh saya,ternyata sangat efektif. Test di GID network menunjukkan 78% Compression. Dan ini tanpa plugin yang selama ini menjadi ketergantungan saya. Memang apa yang saya lakukan tetap dengan mengaktifkan kompresi gzip,namun selain saya tempatkan pada file-file php hasil konvert dari CSS dan javascript,juga saya tempatkan pada functions.php,dan ini sangat efektif. Saya hanya menambahkan sedikit di file functions.php seperti ini.
<?php
←Tag pembuka di bagian paling atas functions.php
ob_start("ob_gzhandler");
ob_start("compress");


Kode berwarna merah itu saja yang ditambahkan. Sebenarnya kode ini biasa ditempatkan di bagian index.php,single.php,page.php,404.php,archieves.php,juga search.php secara terpisah. Tapi karena struktur tema yang saya gunakan memang rumit dan banyak enkripsi atau encode,saya cari alternatif lain dengan mencoba menerapkannya di functions.php.Dari semua referensi yang pernah saya baca,belum pernah saya temukan cara mengaktifkan kompresi melalui functions.php,kebanyakan semua melakukannya melalui .htaccess,dan file-file php lainnya. Untuk benar atau tidaknya cara ini,saya juga belum dapat kepastian. Entah ini cara yang benar atau salah,apakah memang cara ini telah lama digunakan atau tidak,saya belum tahu pasti. Tapi yang jelas hasil test GID Network menunjukkan bahwa cara ini bekerja. Tidak hanya itu,test pagespeed GT Metrixjuga menunjukkan pagespeed saya mencapai 91 (A),padahal sebelumnya ketika memakai W3 Total Cache tidak bisa lebih dari poin 85-86. Di Google Pagespeedjuga menjadi 94 dari sebelumnya yang mentok 92 saja.Tidak puas hanya sampai disitu,saya menambahkan lagi beberapa perintah di functions.php. Ini bisa mengkompres semua file secara instan,dan menjadikannya sebaris html. Tapi yang ini jangan dicoba sebelum membackup file tema. Karena akan sulit mengembalikannya seperti semula jika ingin membuka editor. Seperti ini yang saya tambahkan di functions.php.
<?php


ob_start("ob_gzhandler");

ob_start("compress");

// required header info and character set

header("Content-type: text/css; charset: UTF-8");

// duration of cached content (Cache for 1 weeks)

$offset = 60 * 60 * 24 * 7;

$ts = gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";

// cache control to process

header ('Cache-Control: max-age=' . $offset . ', must-revalidate');

//set etag-header

header('ETag: "'.md5($ts).'"');

// expiration header format

$ExpStr = "Expires: " . gmdate("D, d M Y H:i:s",time() + $offset) . " GMT";

// send cache expiration header to browser

header($ExpStr);

// initialize compress function for white-space removal

ob_start("compress");

// Begin function compress

function compress($buffer) {

// remove comments

$buffer = preg_replace('!/*[^*]**+([^/][^*]**+)*/!', '', $buffer);

// remove tabs, spaces, new lines, etc.

$buffer = str_replace(array("rn", "r", "n", "t", ' ', ' ', ' '), '', $buffer);

// remove unnecessary spaces

$buffer = str_replace('{ ', '{', $buffer);

$buffer = str_replace(' }', '}', $buffer);

$buffer = str_replace('; ', ';', $buffer);

$buffer = str_replace(', ', ',', $buffer);

$buffer = str_replace(' {', '{', $buffer);

$buffer = str_replace('} ', '}', $buffer);

$buffer = str_replace(': ', ':', $buffer);

$buffer = str_replace(' ,', ',', $buffer);

$buffer = str_replace(' ;', ';', $buffer);

return $buffer;}

ob_end_flush();


Kode berwarna merah saja yang ditambahkan,penempatannya setelah tag pembuka <?php di functions.php. Sebenarnya kode itu saya pelajari dari Blog Bang Alwiyang digunakan untuk mengkompres file-file CSS yang dijadikan PHP. Tapi karena saya selalu ingin coba-coba,saya menerapkannya di functions.php,dan seketika isi halaman saya menjadi sebaris saat saya lihat source kodenya. Sungguh kompresi yang cukup ekstrim.Jika ingin mencoba,backup dulu file-file tema yang Anda gunakan,atau lebih baik mencoba dulu di WordPress offline. Karena semua akan terkompres termasuk ketika Anda masuk dashboard atau halaman Admin,editor html posting Anda pun menjadi terkompres semua.Ternyata optimalisasi performa tidak harus bergantung pada plugin. Yang penting mengenal struktur tema yang dipakai,dan melakukan modifikasi hingga mencapai hasil yang memuaskan. Mungkin sampai disini sharing Reyzha untuk kali ini,saya masih akan menyempurnakan lagi untuk penempatan javascript tema ini.O iya,jika Sobat ada yang berminat untuk mendapatkan tema Maxime seperti ini,akan saya berikan versi optimal hasil modifikasi saya. Diantaranya aktifasi kompresi,optimasi header,tambahan pertanyaan antispam simpel seperti komentar di bawah,dan juga perubahan gambar-gambar background menjadi CSS3 gradient dan penambahan transisi. Jika ada pertanyaan atau tanggapan silakan kirim melalui form komentar.Sekian dulu celotehan saya Sobat,selamat beraktifitas dan Salam... :)

11 komentar:

Puguh Alakadarnya mengatakan...

wah mas kalo boleh saya pesen donk tema yang sudah dikompresin, tema yg Ariel itu loh mas , soalnya saya terlalu gaptek untuk ngurusin ini ... hehe sesama wonk kediri mas, msok tego men to :D

Reyzha mengatakan...

Gampang... Bisa Diatur... Wani Piro... :)
Haha...
OK OK, aku modif dulu biar optimal buat performa plus SEO nya...

Puguh Alakadarnya mengatakan...

WAHHH tenanan to mas ?
hehe okelah mas saya tunggu kalo begitu :D

Reyzha mengatakan...

Siip... hehe... :)

Randeezt mengatakan...

Saya coba cek di gzip-test trus tulisannya gini :
"Web page compressed ? Yes" itu apa perlu mengaktifkan kompresi mas ?

Pebryan mengatakan...

zha..buat blogspot ada gk..wkwkwkkw..buat gue ya :p

Reyzha mengatakan...

itu berarti sudah aktif, kemungkinan dari plugin cache atau memang sudah dilakukan tweaking sebelumnya.

Nah, tu saya lihat pake W3 Total cache hehe... plugin itu juga jadi favorit saya. Tapi sebenarnya ke pagespeed lebih optimal menggunakan cara-cara manual daripada dengan plugin. Namun saya tetap pake W3TC soalnya masih mencoba fungsi CDN nya.

Reyzha mengatakan...

apanya peb ???

Pebryan mengatakan...

biar blog ku ringan...hehe..gimana caranya

mampir ya..bot baru zha
http://pebryan.blogspot.com/2012/04/bot-perfect-world-indonesia-2012.html

Reyzha mengatakan...

kalau blogspot aku kurang paham peb. tapi untuk optimalisasi dibatasi sama yang punya server (google), untuk yang bisa dilakukan ya mengurangi penggunaan javascript sama gadget yang gak penting. terus milih temanya juga yang minimalis, gak banyak jquery.

motivational quotes mengatakan...

This web site is admittedly fascinating i'm searching for is there the other examples? but anyway thanks significantly because I found that i was probing for.

Posting Komentar

Tahukah anda, berkomentar menggunakan nama dan url bisa meningkatkan kunjungan balik ke Blog anda? Gunakan form komentar dengan bijak. Tingkatkan Backlink secara efektif hanya dengan meninggalkan komentar menggunakan Name/URL.