Kamu pasti pernah mengalaminya. Satu situs langsung terbuka begitu kamu menekan tautan, sementara situs lain cuma diam dengan kursor berputar sampai kamu mulai curiga koneksimu putus. Anehnya, dua situs itu bisa jadi sama-sama halaman kecil yang sederhana. Lalu kenapa yang satu terasa gesit dan yang lain terasa berat?
Banyak orang menyalahkan “kecepatan internet”, padahal itu baru separuh cerita. Performa web ditentukan oleh sesuatu yang jarang didengar pemula: waktu yang dibutuhkan sebuah permintaan untuk berjalan ke server lalu kembali lagi. Waktu perjalanan ini punya nama, dan begitu kamu memahaminya, banyak hal membingungkan di web tiba-tiba jadi masuk akal.
Artikel ini memberi kamu model berpikir yang santai dan praktis. Tidak ada matematika rumit, tidak butuh gelar jaringan. Di akhir nanti, kamu akan paham kenapa jarak memperlambat segalanya, kenapa “internet cepat” tidak selalu berarti “situs cepat”, dan kenapa hal seperti CDN dan caching itu ada.
Apa yang sebenarnya terjadi saat membuka halaman
Saat kamu menekan tautan, browser tidak ujug-ujug menerima halamannya. Browser mengirim sebuah permintaan ke jaringan, permintaan itu sampai ke server di suatu tempat di dunia, server menyiapkan jawaban, lalu jawaban itu menempuh perjalanan kembali ke layarmu. Perjalanan penuh itulah, pergi dan pulang, yang jadi satuan dasar performa web.
Alurnya sederhana:
Browser kamu ──► permintaan menyeberangi jaringan ──► Server
▲ │
└────────── jawaban kembali ke kamu ◄────────────────┘
Setiap bagian halaman web, mulai dari HTML, gambar, gaya tampilan, sampai skrip, bisa jadi butuh perjalanan seperti ini sendiri-sendiri. Sebuah halaman jarang cuma satu permintaan; sering kali jumlahnya puluhan. Dan waktu tiap perjalanan itu menumpuk.
Latensi: waktu pulang-pergi
Latensi adalah jeda antara meminta sesuatu dan mulai menerima jawabannya. Cara paling umum mengukurnya adalah lewat round-trip time (sering disingkat RTT), yaitu berapa lama sinyal kecil menempuh perjalanan dari perangkatmu ke server lalu balik lagi.
Cara mudah membayangkan latensi adalah seperti percakapan dari jarak jauh. Bayangkan kamu meneriakkan sebuah pertanyaan ke seberang jurang, lalu menunggu gemanya. Kata-katanya pendek, tapi lamanya menunggu tergantung seberapa jauh dinding di seberang sana. Sekeras apa pun kamu berteriak, gema itu tetap butuh waktu yang sama untuk kembali.
Latensi sebenarnya bisa kamu lihat lewat alat bawaan bernama ping, yang mengirim paket kecil ke server lalu mencatat waktu pulang-perginya:
ping example.com
Reply from example.com: time=12ms
Reply from example.com: time=11ms
Reply from example.com: time=13ms
Angka time=12ms itulah round-trip time-nya. Dua belas milidetik tergolong cepat. Tapi kalau server yang sama berada di belahan bumi lain, bisa jadi kamu melihat time=240ms, dan halaman terasa jelas lebih lambat padahal tidak ada hal lain yang berubah.
Milidetik itu menumpuk
Satu perjalanan pulang-pergi 200ms kedengarannya sepele. Tapi kalau memuat satu halaman butuh sepuluh perjalanan berurutan, itu jadi dua detik penuh menunggu sebelum semuanya rampung, hanya karena latensi. Inilah kenapa mengurangi jumlah perjalanan sama pentingnya dengan memperpendek jarak tiap perjalanan.
Kenapa jarak fisik berpengaruh
Latensi bukan angka yang asal muncul. Sebagian besarnya bermuara pada hukum fisika. Data berjalan lewat kabel (kadang juga nirkabel), dan walaupun nyaris secepat cahaya, menyeberangi samudra dan benua tetap memakan waktu nyata. Permintaan dari Jakarta ke server di Amerika Serikat harus benar-benar menempuh seluruh jarak itu, lalu jawabannya harus kembali menempuh jarak yang sama.
Tapi jarak bukan satu-satunya faktor. Datamu tidak mengalir lewat satu kabel lurus. Ia melewati banyak mesin perantara, yaitu router dan switch yang meneruskannya dari satu jaringan ke jaringan berikutnya. Setiap titik perhentian ini disebut hop, dan tiap hop menambah sedikit jeda saat data diterima, diperiksa, lalu diteruskan.
Jadi ada dua hal yang memanjangkan latensi:
- Jarak — server yang lebih jauh berarti perjalanan fisik yang lebih panjang untuk tiap pulang-pergi.
- Hop — makin banyak mesin perantara berarti makin banyak jeda kecil yang bertumpuk.
Inilah alasan utama kenapa situs yang dihosting jauh darimu bisa terasa lambat sekalipun halamannya ringan. Yang jadi penghambat bukan ukuran datanya, melainkan perjalanannya.
Bandwidth tidak sama dengan latensi
Di sinilah letak salah paham yang menjebak hampir semua orang. Orang bilang “internet saya cepat” lalu menganggap setiap situs seharusnya terbuka seketika. Padahal “internet cepat” biasanya merujuk pada bandwidth, dan bandwidth itu hal yang berbeda dari latensi.
- Bandwidth adalah seberapa banyak data yang bisa mengalir per detik — lebar pipanya.
- Latensi adalah seberapa lama data menempuh perjalanan — panjang pipanya.
Ada perumpamaan klasik yang membuatnya jelas. Bayangkan sebuah jalan tol:
| Konsep | Perumpamaan jalan tol | Yang dikendalikan |
|---|---|---|
| Bandwidth | Berapa banyak lajurnya | Berapa banyak yang bisa lewat sekaligus |
| Latensi | Berapa panjang jalannya | Berapa lama satu perjalanan menempuhnya |
Menambah lajur (bandwidth) membuat lebih banyak mobil bisa melaju berdampingan, yang bagus untuk memindahkan data dalam jumlah besar, misalnya streaming video berkualitas tinggi. Tapi kalau jalannya sangat panjang (latensi tinggi), tiap mobil tetap butuh waktu untuk sampai ke ujung. Melebarkan jalan tidak membuatnya jadi lebih pendek.
Karena itulah upgrade ke paket internet lebih kencang kadang nyaris tidak mengubah seberapa gesit rasa membuka situs. Untuk browsing sehari-hari, di mana halamannya kecil tapi butuh beberapa pulang-pergi cepat, yang sering menahanmu adalah latensi, bukan bandwidth.
Patokan kasar
Berkas besar (video, unduhan besar) sebagian besar dibatasi oleh bandwidth. Rasa halaman yang “responsif” atau “nge-lag” sebagian besar dibatasi oleh latensi. Memperbaiki yang satu tidak otomatis membenahi yang lain.
Permintaan yang lebih sedikit dan lebih dekat itu menang
Begitu kamu menerima bahwa tiap pulang-pergi memakan waktu, dua strategi untuk web yang lebih cepat jadi kelihatan jelas.
Buat permintaan lebih sedikit. Kalau sebuah halaman butuh empat puluh berkas terpisah, itu empat puluh kesempatan bagi latensi untuk menumpuk. Menggabungkan berkas, membuang hal yang sebenarnya tidak dibutuhkan halaman, dan menghindari bolak-balik yang tak perlu, semuanya memangkas total waktu tunggu. Lebih sedikit perjalanan, lebih sedikit jeda yang terkumpul.
Buat tiap permintaan lebih pendek. Kalau servernya secara fisik lebih dekat ke pengunjung, tiap pulang-pergi jadi lebih cepat semata-mata karena data menempuh jarak lebih pendek dan melewati lebih sedikit hop. Pengunjung di Surabaya mendapat jawaban lebih cepat dari server di Indonesia ketimbang dari server di Eropa.
Digabungkan, tujuannya adalah perjalanan yang lebih sedikit, masing-masing sependek mungkin. Satu gagasan itu menjadi pondasi hampir semua teknik performa web yang nanti kamu temui.
Di sinilah CDN berperan
Kamu tidak bisa memindahkan satu server-mu supaya dekat dengan semua pengunjung sekaligus. Pengguna di Jakarta, satu lagi di London, dan satu lagi di São Paulo mustahil sama-sama dekat dengan satu mesin. Maka, alih-alih memindahkan server, jawaban web adalah membuat salinan lalu menyebarkannya. Itulah yang dilakukan CDN.
CDN (Content Delivery Network) adalah jaringan server yang ditempatkan di banyak lokasi di seluruh dunia. Salinan berkas situsmu, terutama yang tidak berubah-ubah seperti gambar, lembar gaya, dan skrip, disimpan di server-server ini. Saat seseorang berkunjung, ia dilayani dari lokasi terdekat dengannya, bukan dari satu server asal yang jauh.
Tanpa CDN:
Pengunjung (Jakarta) ───────────────► Server (AS) lambat, jauh
Dengan CDN:
Pengunjung (Jakarta) ──► Titik CDN (Jakarta) cepat, dekat
Misalkan ACY Partner Indonesia menaruh server utamanya di satu negara tapi memakai CDN. Pembaca yang membuka blog.acy-partner.com dari benua lain akan menerima gambar dan gaya tampilan dari lokasi CDN terdekat, bukan dari seberang samudra. Jaraknya menyusut, latensi turun, dan halaman terasa lebih cepat, tanpa siapa pun memindahkan server aslinya.
CDN bukan pengganti server-mu
CDN umumnya menangani bagian yang statis dan berulang. Server asalmu tetap mengerjakan hal yang unik, misalnya menyusun halaman personal atau memproses sebuah formulir. Anggap CDN sebagai penyimpanan cepat di dekat pengunjung untuk bagian-bagian yang sama buat semua orang.
Peran caching
Ada satu gagasan lagi yang diam-diam membuat web cepat: caching. Caching berarti menyimpan salinan sesuatu supaya kamu tidak perlu mengambilnya lagi dari tempat yang jauh. Kalau jawabannya tidak berubah, buat apa membayar ongkos pulang-pergi penuh untuk kedua kalinya?
Caching terjadi di beberapa tempat sekaligus:
- Di browser kamu. Setelah kunjungan pertama, browser menyimpan berkas secara lokal. Pada kunjungan berikutnya, ia memakai ulang berkas itu alih-alih bertanya lagi ke server, makanya situs yang pernah kamu buka sering kali termuat nyaris seketika.
- Di CDN. Lokasi CDN menyimpan salinan supaya bisa menjawab banyak pengunjung terdekat tanpa harus balik ke server asal tiap kali.
- Di server. Server bisa mengingat hasil pekerjaan yang berat supaya tidak perlu mengulanginya untuk tiap permintaan.
Prinsipnya sama di mana-mana: permintaan tercepat adalah permintaan yang tidak perlu kamu kirim sama sekali. Caching mengubah perjalanan pulang-pergi yang berulang menjadi pencarian lokal yang instan, dan ini sering jadi alasan terbesar kenapa situs yang sudah akrab terasa cepat.
Model berpikir yang bisa kamu pegang
Mari kita rangkai semuanya jadi satu gambaran yang bisa kamu bawa terus:
- Membuka halaman berarti mengirim permintaan lalu menunggu perjalanan pulang-pergi rampung.
- Latensi adalah waktu pulang-pergi, sebagian besar ditentukan oleh jarak fisik dan jumlah hop di sepanjang jalan.
- Bandwidth (seberapa banyak data muat) adalah hal berbeda dari latensi (seberapa lama perjalanannya); paket lebih cepat tidak memperpendek jalan.
- Untuk lebih cepat, buat permintaan lebih sedikit dan jaga supaya lebih pendek (lebih dekat).
- CDN mendekatkan salinan berkasmu ke pengunjung, sehingga jaraknya menyusut.
- Caching menghindari perjalanan ulang dengan memakai kembali apa yang sudah ada.
Kamu tidak perlu mengoptimalkan apa pun hari ini. Intinya cukup memahami kenapa sebuah situs terasa seperti itu. Saat halaman lambat, biasanya itu bukan misteri dan bukan salahmu, melainkan soal jarak, terlalu banyak perjalanan, atau kesempatan caching yang terlewat.
Rangkuman
Kecepatan web lebih sedikit soal “kecepatan internet” mentah, dan lebih banyak soal waktu perjalanan. Latensi, jeda pulang-pergi yang dibentuk oleh jarak dan hop, adalah kekuatan diam di balik rasa “kok lambat banget” itu. Bandwidth dan latensi adalah ukuran yang berbeda, dan mencampuradukkannya membuat banyak orang membuang uang untuk paket cepat yang tidak menolong browsing sehari-hari.
Jawaban web atas masalah jarak adalah mendekatkan konten (CDN) dan menghindari bertanya dua kali (caching), sambil menjaga jumlah permintaan tetap kecil. Pegang erat model berpikir ini. Nanti, saat kamu mulai menyelami sisi praktis performa web, kamu sudah lebih dulu paham kenapa di balik tiap teknik, dan itu membuat sisanya jauh lebih mudah dipelajari.