Critical Rendering Path — Performance

Critical Rendering Path (CRP) Critical Rendering Path adalah urutan langkah yang dilakukan browser dari menerima HTML sampai menampilkan pixel di layar…

Critical Rendering Path (CRP)

Critical Rendering Path adalah urutan langkah yang dilakukan browser dari menerima HTML sampai menampilkan pixel di layar. Memahami CRP adalah fondasi untuk mengoptimasi LCP, INP, dan CLS — setiap detik metrik itu bertambah karena CRP yang tidak efisien.

HTML Download Parse → DOM CSS Parse → CSSOM Render Tree DOM + CSSOM Layout Posisi + Ukuran Paint Pixel Composite Layers → Layar Bagian kuning = render-blocking (HTML parse + CSSOM wajib selesai sebelum Render Tree) LCP biasanya terjadi di fase Paint pertama setelah semua resource kritis dimuat

Tahap CRP

  1. DOM — browser parse HTML menjadi tree. Script tag tanpa defer/async memblokir parse.
  2. CSSOM — browser parse CSS. CSS adalah render-blocking by default: tidak ada pixel yang ditampilkan sampai CSSOM selesai.
  3. Render Tree — gabungan DOM + CSSOM, hanya node yang terlihat (tidak display:none).
  4. Layout (Reflow) — hitung posisi dan ukuran setiap elemen. Mahal untuk DOM yang dalam.
  5. Paint — gambar pixel untuk text, warna, border, shadow.
  6. Composite — gabung layers (transform/opacity layer, scroll layer) menjadi frame akhir. Dijalankan di GPU.

Render-Blocking Resources

Hubungan CRP dengan Core Web Vitals

LCP = waktu Paint pertama untuk elemen terbesar. LCP lambat biasanya karena:

Cara Mempercepat CRP

  1. Kurangi byte — minify HTML/CSS/JS, gzip/brotli compression.
  2. Kurangi resource kritis — inline critical CSS, defer non-critical JS, preload font LCP.
  3. Perpendek critical path — hindari @import (serial), hilangkan chain redirect, gunakan HTTP/2 push/preload.
<!-- BURUK — script blocking di head -->
<head>
  <link rel="stylesheet" href="big.css">
  <script src="app.js"></script>
</head>

<!-- BAIK — CSS kritis inline, JS di-defer -->
<head>
  <style>/* critical CSS */</style>
  <link rel="preload" href="hero.webp" as="image">
  <script src="app.js" defer></script>
</head>

Yang akan kamu pelajari