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.phpob_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... :)