File CSS merupakan resource yang memblokir rendering: file harus dimuat dan diproses sebelum browser merender halaman. Halaman web yang berisi lembar gaya besar yang tidak perlu memakan waktu lebih lama untuk dirender.
Dalam panduan ini, Anda akan mempelajari cara menunda CSS yang tidak penting untuk mengoptimalkan Jalur Rendering Penting dan tingkatkan First Contentful Paint (FCP).
Contoh: pemuatan CSS yang kurang optimal
Contoh berikut berisi akordeon dengan tiga paragraf tersembunyi berupa , yang masing-masing diberi gaya dengan class yang berbeda:
Halaman ini meminta file CSS dengan delapan kelas, tetapi tidak semuanya yang diperlukan untuk merender saat ini.
Tujuan dari panduan ini adalah untuk mengoptimalkan halaman ini sehingga hanya gaya penting dimuat secara sinkron, sedangkan sisanya (termasuk gaya paragraf), dimuat dengan cara yang tidak bersifat memblokir.
Ukur
Jalankan Lighthouse di halaman lalu buka Bagian Performa.
Laporan ini menunjukkan metrik First Contentful Paint dengan nilai "1s", dan peluang Meniadakan resource yang memblokir render, yang mengarah ke File style.css:
Untuk memvisualisasikan cara CSS ini memblokir rendering:
- Buka halaman di Chrome.
- Tekan
Control+Shift+J
(atauCommand+Option+J
di Mac) untuk membuka DevTools. - Klik tab Performa.
- Di panel Performance, klik Reload.
Pada rekaman aktivitas yang dihasilkan, Anda akan melihat bahwa penanda FCP langsung ditempatkan setelah CSS selesai memuat:
Artinya, browser harus menunggu semua CSS dimuat dan diproses sebelum mengecat satu piksel di layar.
Optimalkan
Untuk mengoptimalkan halaman ini, Anda perlu mengetahui class mana yang dianggap penting. Untuk menentukannya, gunakan Alat Cakupan:
- Di DevTools, buka Menu Perintah
dengan menekan
Control+Shift+P
atauCommand+Shift+P
(Mac). - Ketik "Cakupan" lalu pilih Show Coverage.
- Klik Reload untuk memuat ulang halaman dan mulai merekam cakupan.
Klik dua kali laporan untuk melihat detailnya:
- Class yang ditandai dengan warna hijau sangat penting. Browser membutuhkannya untuk merender konten yang terlihat, termasuk tombol judul, subtitel, dan akordeon.
- Kelas yang ditandai dengan warna merah tidak penting, hanya memengaruhi konten yang tidak langsung terlihat, seperti paragraf tersembunyi.
Dengan informasi ini, optimalkan CSS Anda sehingga browser dapat mulai memproses gaya penting segera setelah halaman dimuat dan menunda CSS yang tidak penting untuk nanti:
Ekstrak definisi class yang ditandai dengan warna hijau di laporan cakupan, dan tempatkan class tersebut dalam blok
<style>
di bagian atas halaman:<style type="text/css"> .accordion-btn {background-color: #ADD8E6;color: #444;cursor: pointer;padding: 18px;width: 100%;border: none;text-align: left;outline: none;font-size: 15px;transition: 0.4s;}.container {padding: 0 18px;display: none;background-color: white;overflow: hidden;}h1 {word-spacing: 5px;color: blue;font-weight: bold;text-align: center;} </style>
Muat class lainnya secara asinkron dengan menerapkan kode berikut pola:
<link rel="preload" href="styles.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> <noscript><link rel="stylesheet" href="styles.css"></noscript>
Ini bukan cara standar untuk memuat CSS. Berikut caranya:
link rel="preload" as="style"
meminta style sheet secara asinkron. Anda dapat mempelajaripreload
lebih lanjut di panduan Pramuat aset penting.- Atribut
onload
dilink
memungkinkan browser memproses CSS saat {i>style sheet<i} selesai dimuat. - "nulling" pengendali
onload
setelah digunakan membantu beberapa browser menghindari memanggil kembali pengendali saat mereka mengganti atributrel
. - Referensi ke lembar gaya di dalam elemen
noscript
menyediakan untuk browser yang tidak mengeksekusi JavaScript.
Halaman yang dihasilkan akan terlihat sama persis seperti versi sebelumnya, bahkan bila sebagian besar gaya dimuat secara asinkron. Berikut cara kerja gaya inline dan permintaan asinkron ke file CSS terlihat seperti dalam HTML file:
Memantau
Gunakan DevTools untuk menjalankan trace Performa lain di halaman yang dioptimalkan.
Penanda FCP muncul sebelum halaman meminta CSS, yang berarti browser tidak perlu menunggu CSS dimuat sebelum merender halaman:
Sebagai langkah terakhir, jalankan Lighthouse di halaman yang dioptimalkan.
Dalam laporan, Anda akan melihat halaman FCP telah berkurang sebesar 0,2 dtk (sebesar 20% peningkatan!):
Saran Eliminasi aset yang memblokir render tidak lagi muncul di Peluang, dan berada di bagian Audit yang Lulus:
Langkah berikutnya & referensi
Dalam panduan ini, Anda mempelajari cara menunda CSS yang tidak penting dengan mengekstrak secara manual kode yang tidak digunakan di halaman. Untuk lingkungan produksi yang lebih kompleks, panduan ekstrak penting CSS mencakup beberapa alat paling populer untuk mengekstrak CSS kritis dan mencakup codelab untuk melihat caranya kerja dalam praktik