Melanjutkan dari tulisan sebelumnya mengenai optimasi blog, kali ini saya akan mencoba membagikan beberapa teknik tambahan yang saya gunakan untuk meningkatkan kecepatan blog lebih lanjut. Masih belum terlalu jauh dari optimasi yang sebelumnya, kita masih akan berfokus pada perubahan konfigurasi server alih-alih mengubah kode program.

Kenapa terus menerus memainkan konfigurasi server? Karena menurut saya sebaiknya kita berfokus untuk memastikan berbagai komponen yang berinteraksi dalam sistem berjalan secara optimal terlebih dahulu. Jika komponen-komponen yang menjalankan sistem kita belum optimal, apa gunanya memperbaiki kode program? Jika jalanan masih rusak dan berlubang, menggunakan mobil sekuat dan secanggih apapun tidak akan membantu kita dalam melewati jalan tersebut dengan cepat.

Anyway.

Terdapat total dua langkah tambahan yang saya lakukan untuk meningkatkan kecepatan tambahan blog: menggunakan CDN (Content Delivery Network) dan mengaktifkan cache pada sisi klien. Mari kita lihat detil dari masing-masing optimasi.

Optimasi 1: Content Delivery Network (CDN)

Apa itu CDN? Mengutip wikipedia:

Content Delivery Network atau Content Distribution Network (CDN) adalah sebuah sistem server terdistribusi besar yang disebarkan dalam beberapa data center di seluruh Internet. Tujuan dari CDN adalah untuk menyajikan konten kepada pengguna dengan tingkat ketersediaan dan performa yang tinggi.

Sumber: Wikipedia

Jadi singkatnya, kita menyebarkan berbagai data yang diperlukan oleh web kita ke dalam banyak server di seluruh dunia. Kegunaannya? Pengguna kita bisa mengakses data tersebut melalui server yang paling dekat dengannya. Pengguna yang berada di Afrika, misalnya, dapat langsung mengambil data yang diperlukan dari server di Afrika. Tanpa CDN, pengguna tersebut mau tidak mau harus mengambil data dari server Indonesia yang pastinya lebih jauh.

Catatan penting yang harus diingat adalah ketahui dahulu asal mayoritas pembaca anda sebelum mulai mengimplementasikan CDN. Jika mayoritas pengguna web anda berada di Indonesia, sementara layanan CDN yang digunakan tidak memiliki server di Indonesia, maka website anda akan menjadi lebih lambat karena pengguna menjadi harus mengakses server yang lebih jauh (misalnya: Singapura).

Jarak Berkurang, Otomatis Lebih Cepat

Dalam kasus blog ini, penggunaan CDN mempercepat akses karena server yang digunakan (Digital Ocean) berada di Amerika. Dengan menggunakan CDN, pengguna Indonesia (mayoritas pembaca blog) dapat mengakses berbagai aset web melalui Singapura. Layanan CDN yang digunakan oleh blog ini adalah CloudFlare. Implementasi CloudFlare sangat mudah, cukup dengan mendaftar dan memilih jenis optimasi yang diinginkan, lalu mengubah Name Server melalui layanan domain kita.

Jika menggunakan server yang berada di luar negri padahal pengujung web anda mayoritas berada di Indonesia, penggunaan CDN sangat disarankan. Sayangnya, penulis belum berhasil menemukan layanan CDN yang memberikan server lintas Indonesia (WIB, WITA, dan WIT). Kedengarannya jenis layanan seperti ini akan sangat mempercepat Internet lokal Indonesia, tetapi entah kenapa belum ada yang membuka layanan seperti ini. Mungkin ada pembaca yang mengetahui hal ini?

Optimasi 2: Caching

Seperti pada aplikasi lain pada umumnya, kita juga dapat memanfaatkan sistem caching untuk meningkatkan performa sebuah website. Apa itu cache? Cache merupakan sekumpulan data yang disimpan sebagai kopi dari data asli. Penyimpanan kopi data cache ini biasanya dilakukan untuk data yang perlu dikalkulasi atau didapatkan dengan cara khusus sehingga kita tidak perlu melakukan kalkulasi atau prosedur rumit berulang kali setiap kali data akan digunakan.

Bayangkan jika website anda melakukan query data yang sangat kompleks untuk menmapilkan sebuah halaman. Ketika satu orang mengakses halaman tersebut, query tersebut akan dijalankan satu kali. Ketika seratus orang mengakses halaman tersebut, query akan dijalankan sebanyak seratus kali. Ketika puluhan ribu orang mengakses halaman, server anda akan bekerja sambil menahan gundah di hati karena merasa sedang bekerja paksa.

Dengan menggunakan cache, kita cukup melakukan perhitungan tersebut sebanyak satu kali, dan pada penampilan kedua sampai seterusnya kita akan langsung mengambil hasil kalkulasi sebelumnya dari cache. Dengan cara ini, server hanya akan melakukan kalkulasi seminimal mungkin, yang berdampak pada performa. Jika server tidak perlu melakukan kalkulasi rumit setiap kali ingin mengambil data, tentunya performa akan meningkat karena kalkulasi rumit biasanya memakan waktu lama.

Server Lebih Bahagia dengan Cache

Tentu saja terdapat masalah lanjutan, yaitu jika data asli berubah, sehingga nilai kalkulasi berubah juga. Hal ini dikenal dengan masalah cache invalidation. Tentunya kita tidak akan membahas hal ini terlalu jauh, supaya tulisan ini tidak menjadi celoteh panjang tentang ilmu komputer :p

There are only two hard things in Computer Science: cache invalidation and naming things.

Phil Karlton (Sumber)

Kembali ke topik, dalam dunia web, caching dapat dilakukan pada dua sisi: pada sisi server seperti contoh yang diberikan sebelumnya (database), ataupun pada sisi klien. Pada sisi klien, kita dapat memberitahukan browser bahwa beberapa data kita, seperti file CSS atau Javascript, sangat jarang diubah, sehingga browser boleh saja menyimpan file tersebut secara lokal selama sekian hari. Dengen begitu, ketika pengguna kembali datang ke website kita browser tidak lagi perlu mengambil file tersebut lagi. Cukup menggunakan file lokal saja browser sudah dapat menampilkan web dengan benar.

Aktivasi caching pada sisi klien dapat dilakukan dengan konfigurasi Cache-Control. Detil dari konfigurasi dapat dibaca pada halaman ini (Cache-Control pada HTML), dan link berikut memberikan konfigurasi Cache-Control untuk file lain (nginx, apache).

Akhir Kata

Optimasi tambahan ini sangat membantu memangkas waktu penampilan halaman yang sekarang sudah berada dikisaran 1 detik secara konsisten. Web ini telah berhasil mencapai nilai yang sangat memuaskan pada YSlow bagi saya:

Nilai YSlow: A (96)

Lihat juga hasil benchmark lain oleh Pingdom dan GMetrix. Secara umum, berbagai optimasi di atas telah memangkas habis waktu penampilan halaman blog saya dengan sangat sukses. Jika ingin mencoba meningkatkan performa website anda, silahkan coba cara-cara tersebut, dan tentunya pembaca sangat diharapkan untuk meninggalkan komentar jika memiliki pertanyaan, kritik, atau saran tambahan. Selamat melakukan optimasi dan semoga membantu :)

comments powered by Disqus

Daftar Isi