Browser Rendering Pipeline — Web Fundamentals

Memahami bagaimana browser merender halaman akan membantumu menulis kode yang lebih performan. Proses ini disebut Critical Rendering Path. Langkah-langkah…

Tiap kali kamu membuka halaman, browser mengubah HTML dan CSS jadi piksel, titik-titik warna kecil di layar. Prosesnya lewat beberapa tahap yang selalu berurutan, disebut rendering pipeline. Kalau kenal tahapnya, kamu bisa menebak kenapa ada perubahan yang bikin halaman tersendat dan ada yang tetap mulus.

🧪 Tebakan cepat: buat animasi kotak bergeser ke kanan, mana yang lebih ringan buat browser, mengubah left atau transform? Jawabannya ada di bagian "Perubahan beda, tahap beda".

Enam tahap dari kode ke layar

Ambil halaman kecil ini:

<style>
  .kotak { width: 120px; background: tomato; }
</style>
<div class="kotak">Halo</div>

Browser mengolahnya dalam enam tahap, berurutan:

  1. DOM. Browser membaca (parse) HTML dari atas ke bawah. <div class="kotak">Halo</div> masuk ke DOM, singkatan dari Document Object Model: pohon berisi semua elemen halaman. JavaScript mengubah halaman lewat DOM ini.
  2. CSSOM. Aturan .kotak { ... } masuk ke CSSOM (CSS Object Model), kumpulan semua aturan style.
  3. Style. Aturan CSSOM dicocokkan ke tiap elemen DOM. Elemen yang gak tampil, misalnya display: none, dibuang. Hasilnya disebut render tree.
  4. Layout. Browser menghitung posisi dan ukuran tiap elemen: kotak ini lebarnya 120px, di pojok kiri atas.
  5. Paint. Browser mewarnai pikselnya: latar merah tomat dan teks Halo.
  6. Composite. Hasil paint bisa terbagi ke beberapa lapisan (layer). Browser menumpuknya jadi satu gambar di layar, dibantu GPU (chip grafis).

Jadi urutannya: parse HTML, DOM, CSSOM, render tree, Layout, Paint, Composite.

Perubahan beda, tahap beda

Setelah halaman tampil, CSS masih bisa berubah, misalnya lewat JavaScript atau :hover. Browser gak mengulang semuanya: dia menghitung ulang style, lalu mulai lagi dari tahap pertama yang terkena.

Yang diubah Tahap yang jalan lagi
width, height, margin, left Layout, Paint, Composite
color, background, box-shadow Paint, Composite
transform, opacity Composite saja

Layout ulang disebut reflow, dan paling mahal: kalau satu elemen melebar, elemen di sekitarnya ikut dihitung ulang. Paint ulang disebut repaint, lebih murah. Buat animasi transform dan opacity, browser modern memberi elemennya lapisan sendiri, jadi cukup Composite: lapisannya tinggal digeser atau dipudarkan.

Itu jawaban tebakannya: transform lebih ringan. Animasi pakai left menjalankan Layout di setiap frame.

Script yang menahan HTML

Browser yang ketemu <script src="app.js"> biasa langsung berhenti membaca HTML: script di-download dan dijalankan dulu, baru HTML-nya dibaca lagi. Selama itu bagian halaman di bawahnya belum dibangun. CSS di <head> juga menahan, tapi beda: browser belum menggambar apa pun sampai CSS-nya selesai dimuat.

Supaya script gak menahan, pakai defer:

<head>
  <link rel="stylesheet" href="style.css">
  <script defer src="app.js"></script>
</head>

⚠️ Jebakan yang sering ketemu

TL;DR: Browser mengubah kode jadi piksel lewat urutan tetap: parse HTML, DOM, CSSOM, render tree, Layout, Paint, Composite. Mengubah ukuran atau posisi menjalankan ulang Layout (reflow, paling mahal), mengubah warna cuma Paint (repaint), dan transform atau opacity cukup Composite, jadi pakai itu buat animasi. Script biasa menahan pembacaan HTML: pakai defer atau taruh di akhir <body>.

Yang akan kamu pelajari