WordPress, tidak bisa dipungkiri untuk saat ini adalah “the best free & open source CMS”. Matt Mullenweg, founder dari WordPress, ketika memberikan presentasi di WordCamp San Francisco pada Agustus 2011, mengumumkan bahwa WordPress telah mengalami pertumbuhan yang sangat impresif. WordPress hingga Agustus 2011 telah dipakai oleh 14,7% situs/blog yang masuk dalam predikat “Top 1 Million“. Dan 22 dari 100 domain aktif baru di Amerika menggunakan WordPress.
WordPress merupakan CMS yang gratis, sumber terbuka (open source), powerful, fleksibel, aman dan support yang didukung oleh jutaan pengguna wordpress di seluruh dunia. Anda mempunyai masalah dengan WordPress? Ketik saja kata permasalahan anda di kotak pencarian Google, dan ribuan solusi akan dipaparkan untuk membantu anda.
Mengapa WordPress Membutuhkan Caching?
Di setiap kali ada pengunjung situs/blog kita, WordPress akan memproses rekues yang terkadang membutuhkan waktu cukup lama. Awalnya WordPress akan memproses kode PHP yang akan membuat beberapa panggilan ke database dan menjadikannya format HTML agar bisa ditampilkan di browser agar pengunjung bisa melihat halaman yang mereka rekues. Di situs/blog yang memiliki trafik tinggi, proses ini bisa terjadi berulang-ulang puluhan hingga ratusan kali per halaman! Dan ini bisa membuat kinerja server menjadi tinggi, dan akibatnya WordPress akan berjalan bak siput, alias lemot.
Dengan caching, WordPress akan memproses rekues via PHP ke database hanya pada pengunjung pertama saja. Selanjutnya jika ada pengunjung lain yang datang mengakses akan dilayani via cache. Dengan caching, WordPress tidak perlu lagi berulang-ulang melakukan rekues ke PHP & Database untuk melayani setiap pengunjung. Dampaknya WordPress akan tetap cepat walaupun diakses oleh banyak pengunjung.
Caching Dengan W3 Total Cache
Cara termudah untuk melakukan caching WordPress adalah menggunakan plugin. Tersedia banyak pilihan plugin untuk caching, diantaranya W3 Total Cache, WP Super Cache, Hyper Cache, dll.
Saya pribadi lebih memilih W3 Total Cache karena plugin caching ini memiliki fitur yang cukup lengkap diantara kompetitor lainnya, diantaranya dukungan untuk CDN (content Delivery Network), Page Caching, HTML/Javascript/CSS minify, Object Cache, Database Cache, Varnish Purge, dukungan untuk Cloudflare.
Benchmark
Untuk melakukan test WordPress sebelum dan sesudah menggunakan W3 Total Cache, saya memakai Apache Bench dengan opsi 10 concurrent connections untuk 1000 hits (dengan keepalive).
Note: Saya menginstall WordPress 3.4.2 dengan tanpa tambahan isi, hanya default dari instalasi WordPress saja.
Perintah yang saya jalankan untuk benchmark adalah:
ab -kc 10 -n 1000 https://www.situs-saya.com/
Adapun hasil SEBELUM menggunakan W3 Total Cache adalah sebagai berikut:
Server Software: Apache Server Hostname: www.situs-saya.com Server Port: 80 Document Path: / Document Length: 7423 bytes Concurrency Level: 10 Time taken for tests: 35.830 seconds Complete requests: 1000 Failed requests: 617 (Connect: 0, Receive: 0, Length: 617, Exceptions: 0) Write errors: 0 Keep-Alive requests: 0 Total transferred: 7628800 bytes HTML transferred: 7424800 bytes Requests per second: 27.91 [#/sec] (mean) Time per request: 358.295 [ms] (mean) Time per request: 35.830 [ms] (mean, across all concurrent requests) Transfer rate: 207.93 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 29 357 59.6 386 498 Waiting: 29 357 59.7 386 498 Total: 29 357 59.6 386 498 Percentage of the requests served within a certain time (ms) 50% 386 66% 395 75% 398 80% 400 90% 405 95% 413 98% 491 99% 493 100% 498 (longest request)
Diatas menunjukkan bahwa dengan 10 cuncurrent connections untuk 1000 hits, WordPress membutuhkan waktu 498 miliseconds.
Sedangkan hasil benchmark dengan menggunakan W3 Total Cache adalah sebagai berikut:
Server Software: Apache Server Hostname: www.situs-saya.com Server Port: 80 Document Path: / Document Length: 7093 bytes Concurrency Level: 10 Time taken for tests: 0.673 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Keep-Alive requests: 996 Total transferred: 7400794 bytes HTML transferred: 7093000 bytes Requests per second: 1484.92 [#/sec] (mean) Time per request: 6.734 [ms] (mean) Time per request: 0.673 [ms] (mean, across all concurrent requests) Transfer rate: 10732.02 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 0 Processing: 0 7 20.6 1 89 Waiting: 0 7 20.6 1 89 Total: 0 7 20.6 1 89 Percentage of the requests served within a certain time (ms) 50% 1 66% 1 75% 1 80% 2 90% 4 95% 84 98% 85 99% 85 100% 89 (longest request)
Terlihat perbedaan yang sangat jauh sebelum dan sesudah menggunakan caching. Dengan 10 cuncurrent connections untuk 1000 hits, WordPress hanya membutuhkan waktu 89 miliseconds! Perbedaan yang signifikan juga terlihat pada hasil lainnya, seperti contoh failed request tidak ada, beda dengan tanpa cache yang failed request hingga 617!
Rangkuman
Gunakan selalu teknik cache agar WordPress anda bisa diakses dengan cepat. Kurangi penggunaan plugin yang terlalu banyak, karena akan menambah panggilan rekues ke PHP & Database, yang akan menyebabkan WordPress bekerja lebih keras, dan efeknya akan mempengaruhi kecepatan WordPress anda.