divmagic Make design
SimpleNowLiveFunMatterSimple
Optimasi Kinerja CSS: Mengapa GitHub Mengirimkan Lebih Banyak CSS (Bukan Lebih Sedikit) untuk Waktu Muat yang Lebih Cepat
Blogs›CSS›Optimasi Kinerja CSS: Mengapa GitHub Mengirimkan Lebih Banyak CSS (Bukan Lebih Sedikit) untuk Waktu Muat yang Lebih Cepat
CSS

Optimasi Kinerja CSS: Mengapa GitHub Mengirimkan Lebih Banyak CSS (Bukan Lebih Sedikit) untuk Waktu Muat yang Lebih Cepat

DivMagic
DivMagic TeamOctober 31, 2026
14 min read

Optimasi Kinerja CSS: Mengapa GitHub Mengirim Lebih Banyak CSS (Bukan Lebih Sedikit) untuk Waktu Muat yang Lebih Cepat

Selama lebih dari satu dekade, pedoman kinerja frontend sangat konsisten: minimalkan CSS Anda, inline jalur kritis, pisahkan sisanya, dan kirimkan semuanya secara asinkron. Mantra "kirim lebih sedikit kode" telah tertanam begitu dalam di alam bawah sadar pengembang sehingga mempertanyakannya terasa hampir seperti bid'ah.

Kemudian tim teknik GitHub menerbitkan sebuah posting berjudul "Meningkatkan kinerja situs dengan mengirim lebih banyak CSS", dan komunitas frontend secara kolektif mengangkat alis. Judulnya saja terdengar seperti kontradiksi. Mengirim lebih banyak CSS untuk membuat situs lebih cepat? Bukankah itu terbalik?

Ternyata, tidak. Temuan GitHub menantang kebijaksanaan konvensional yang telah mengatur strategi pengiriman CSS selama bertahun-tahun. Data mereka mengungkapkan bahwa pendekatan tradisional yaitu inlining CSS kritis dan pemisahan kode sisanya, meskipun secara teoritis masuk akal, seringkali menghasilkan hasil yang semakin berkurang dalam kondisi dunia nyata. Dalam beberapa kasus, hal itu justru merugikan kinerja.

Dalam pembahasan mendalam ini, kita akan mengungkap penemuan kontraintuitif GitHub, memeriksa metrik yang menjelaskan mengapa mengirim lebih banyak CSS bisa lebih cepat, dan mengeksplorasi apa artinya ini untuk alur kerja pengembangan Anda sendiri, termasuk bagaimana alat seperti DivMagic cocok dengan strategi CSS modern yang mengutamakan kinerja.

Pedoman Pengiriman CSS Tradisional

Sebelum kita dapat menghargai mengapa pendekatan GitHub revolusioner, kita perlu memahami kerangka kerja yang ditantangnya. Strategi optimasi CSS standar yang direkomendasikan sebagian besar panduan kinerja terlihat seperti ini:

Langkah 1: Inline CSS Kritis

Ekstrak aturan CSS yang diperlukan untuk merender konten di atas lipatan (above-the-fold) dan inline langsung di <head> HTML Anda. Ini menghilangkan permintaan yang memblokir render untuk stylesheet eksternal selama cat awal.

Langkah 2: Muat Stylesheet Lengkap Secara Asinkron

Muat file CSS lengkap secara asinkron menggunakan trik atribut preload atau media , sehingga browser dapat mulai merender segera dengan gaya inline dan menerapkan stylesheet lengkap setelah tiba.

Langkah 3: Pisahkan Kode CSS Berdasarkan Rute atau Komponen

Dalam aplikasi satu halaman (single-page applications), sajikan hanya CSS yang diperlukan untuk tampilan saat ini. Alat seperti PurgeCSS, modul CSS, dan utilitas pemisahan kode khusus kerangka kerja memungkinkan pendekatan granular ini.

Di atas kertas, strategi ini mengoptimalkan setiap byte. Namun dalam praktiknya, strategi ini memperkenalkan serangkaian trade-off yang jarang dibahas, dan di situlah tim teknik GitHub memulai penyelidikan mereka.

Penemuan Kontraintuitif GitHub

GitHub, seperti kebanyakan platform skala besar, telah menerapkan sistem pengiriman CSS yang canggih. Mereka meng-inline CSS kritis, memisahkan sisanya menjadi potongan khusus rute, dan menggunakan teknik pemuatan modern untuk menghindari perilaku yang memblokir render. Namun data pemantauan pengguna nyata (RUM) mereka menceritakan kisah yang bertentangan dengan ekspektasi mereka.

software developer, web developer, programmer, software engineer, technology, tech, web developer, programmer, programmer, software engineer, technology, technology, technology, tech, tech, tech, tech, tech

Kunjungan berulang, yang merupakan norma untuk situs seperti GitHub, di mana pengembang kembali puluhan kali sehari, lebih lambat dari yang seharusnya. CSS kritis inline, yang dijalankan pada setiap muat halaman, menambah waktu eksekusi JavaScript. Potongan berbasis rute berarti setiap navigasi memicu permintaan CSS baru. Kompleksitas sistem menambah overhead tanpa manfaat yang proporsional.

Solusi mereka adalah membalikkan skrip: sajikan satu file CSS yang lebih besar yang di-cache oleh browser pada kunjungan pertama dan digunakan kembali di semua navigasi berikutnya. Tanpa CSS kritis inline. Tanpa pemisahan per rute. Tanpa trik pemuatan asinkron. Hanya satu file, satu permintaan, sepenuhnya di-cache.

Hasilnya? Muat halaman yang lebih cepat untuk sebagian besar pengguna, mengurangi overhead eksekusi JavaScript, dan basis kode yang jauh lebih sederhana.

"Permintaan CSS tercepat adalah yang tidak pernah terjadi. Satu stylesheet yang di-cache membuat setiap kunjungan ulang hampir gratis."

Mengapa "Lebih Banyak CSS" Sebenarnya Bukan Lebih Banyak

Ada nuansa penting di sini yang mudah terlewatkan. GitHub tidak mengirim CSS yang menggembung , mereka mengirim file CSS yang terkonsolidasi, dioptimalkan, dan dapat di-cache . Kata "lebih banyak" dalam judul mereka merujuk pada volume CSS yang dikirim dalam satu permintaan, bukan dukungan untuk stylesheet yang terlalu besar.

Perbedaan utamanya adalah antara total byte yang ditransfer dan byte efektif yang ditransfer. Ketika file CSS di-cache, browser tidak perlu mengambilnya lagi pada muat halaman berikutnya. Permintaan HTTP tidak pernah dibuat, byte tidak pernah ditransfer, dan jalur render bersih. Sebaliknya, CSS inline dikirim ulang dengan setiap respons HTML, terlepas dari apakah kontennya telah berubah.

3x
faster repeat visits when CSS is served as a single cacheable file instead of inline critical CSS

Metrik ini, pengalaman kunjungan ulang, adalah di mana data GitHub menunjukkan peningkatan paling dramatis. Untuk platform di mana pengguna menavigasi dengan cepat antara repositori, isu, pull request, dan tampilan kode, navigasi ulang mendominasi pengalaman pengguna.

Bar chart comparing page load times for initial visits and repeat visits across three CSS delivery strategies. Single cached file strategy shows fastest repeat visit times.

Metrik yang Sebenarnya Penting

Untuk memahami keputusan GitHub, Anda perlu melihat melampaui metrik permukaan "ukuran file CSS total" dan memeriksa apa yang sebenarnya mendorong kinerja yang dirasakan di dunia nyata.

First Contentful Paint (FCP)

FCP mengukur kapan browser merender konten DOM pertama. CSS kritis tradisional bertujuan untuk meminimalkan FCP dengan menghilangkan CSS yang memblokir render. Namun, jika file CSS di-cache, tidak ada permintaan yang memblokir render pada kunjungan ulang, browser membaca dari cache dan langsung melukis.

Time to Interactive (TTI)

TTI mengukur kapan halaman menjadi sepenuhnya interaktif. CSS kritis inline, ketika dikombinasikan dengan JavaScript yang mengelola pemuatan stylesheet asinkron, sebenarnya dapat menunda TTI karena browser harus mengeksekusi JavaScript sebelum dapat menyelesaikan stylesheet lengkap. Satu file CSS yang di-cache menghilangkan ketergantungan JavaScript ini sepenuhnya.

Cumulative Layout Shift (CLS)

CLS mengukur stabilitas visual. Salah satu keluhan paling umum tentang implementasi CSS kritis adalah bahwa hal itu menyebabkan halaman "berkedip", tata letak bergeser saat stylesheet lengkap dimuat dan menggantikan gaya inline. Satu file CSS yang dimuat sepenuhnya dari awal menghilangkan pergeseran tata letak ini pada kunjungan ulang.

53%
of mobile users abandon sites that take longer than 3 seconds to load, and repeat-visit speed is the metric that most directly impacts this

Kesimpulannya jelas: untuk situs atau aplikasi apa pun yang dikunjungi pengguna lebih dari sekali, strategi caching lebih penting daripada ukuran file awal. Dan untuk alat pengembang, dasbor, dan platform, di mana kunjungan berulang adalah aturan, bukan pengecualian, ini adalah faktor penentu.

HTTP/2 dan Matinya Era “Banyak Permintaan Kecil”

Salah satu motivasi awal untuk pemisahan kode CSS adalah overhead permintaan HTTP/1.1. Setiap permintaan memerlukan koneksi TCP terpisah, dan browser hanya dapat membuka sejumlah koneksi terbatas per domain. Memisahkan CSS menjadi bagian-bagian yang lebih kecil berarti lebih banyak permintaan, tetapi setiap permintaan lebih cepat diunduh, sebuah trade-off yang terkadang sepadan.

code, coding, web, development, web developer, web development, technology, programming code, computer programming, web design, html, php, data, gray computer, gray technology, gray laptop, gray data, gray design, gray web, gray code, gray coding, gray programming, code, code, code, code, coding, coding, coding, coding, coding, web development, web development, web design, web design, php

HTTP/2 mengubah permainan. Dengan multipleksing, satu koneksi TCP dapat menangani puluhan permintaan simultan tanpa pemblokiran head-of-line. Ini menghilangkan banyak overhead yang membuat pemisahan kode menarik pada awalnya. Kalkulus modern lebih menyukai permintaan yang lebih sedikit dan lebih besar daripada banyak permintaan kecil, terutama ketika permintaan yang lebih besar tersebut dapat di-cache.

Kapan Mengirim Lebih Banyak CSS Masuk Akal, dan Kapan Tidak

Pendekatan GitHub bukanlah solusi universal. Ini bekerja dengan sangat baik untuk situs dengan karakteristik tertentu, tetapi ini bukan jawaban yang cocok untuk semua. Berikut cara mengevaluasi apakah pendekatan ini berlaku untuk proyek Anda.

Kapan Ini Berhasil

  • Tingkat kunjungan berulang yang tinggi: Platform, dasbor, alat internal, dan produk pengembang di mana pengguna kembali beberapa kali sehari
  • Jejak CSS moderat: Total CSS gzip di bawah 200KB, cukup besar untuk mendapatkan manfaat dari caching, cukup kecil untuk menghindari penalti unduhan
  • Navigasi multi-halaman atau multi-tampilan: Aplikasi di mana pengguna bernavigasi di antara banyak tampilan atau rute yang berbeda
  • HTTP/2 dengan caching CDN: Infrastruktur yang mendukung pengiriman efisien dan header cache yang kuat

Kapan Ini Tidak Berhasil

  • Halaman arahan kunjungan tunggal: Halaman pemasaran atau situs kampanye di mana sebagian besar pengguna datang sekali dan tidak pernah kembali
  • Bundel CSS besar: Lembar gaya di atas 500KB gzip, di mana penalti unduhan awal lebih besar daripada manfaat caching
  • Gaya yang sangat beragam: Situs dengan kebutuhan CSS yang sangat berbeda di setiap bagian (meskipun ini jarang terjadi dalam praktik)
ApproachInitial LoadRepeat LoadComplexity
Inline Critical CSS + AsyncFast (render-blocking JS)Medium (re-inlines each time)High (build tooling needed)
Code-Split CSS per RouteMedium (multiple requests)Medium (new request per route)High (router integration)
Single Cached CSS FileSlightly slower first visitVery fast (zero requests)Low (one file, one request)

Apa Artinya Ini untuk Alur Kerja Pengembangan Anda

Implikasi praktis dari penemuan GitHub melampaui metrik kinerja. Penyederhanaan strategi pengiriman CSS memiliki efek berantai pada seluruh jalur pengembangan Anda.

startup, business, people, students, office, strategy, work, technology, company, corporate, communication, young, plan, marketing, computer, design, professional, planning, internet, project, laptop, presentation, web, display, monitor, women, girls, screen, digital, electronic, pc, modern, startup, students, office, marketing, marketing, marketing, marketing, marketing, professional, professional, project, presentation

Konfigurasi Build yang Lebih Sederhana

CSS kritis inline memerlukan alat build yang dapat mengidentifikasi gaya kritis, mengekstraknya, dan menyuntikkannya ke dalam HTML pada waktu build. Ini memerlukan pemeliharaan, pengujian, dan penyesuaian berkelanjutan. Satu file CSS menghilangkan semua kerumitan itu. Langkah build Anda berubah dari pipeline multi-tahap menjadi kompilasi CSS yang sederhana.

Lebih Sedikit Ketergantungan

Alat ekstraksi CSS kritis, pustaka pemuatan async, dan kerangka kerja injeksi CSS berbasis rute semuanya menjadi tidak diperlukan. Ini mengurangi jejak ketergantungan Anda dan beban keamanan serta pemeliharaan yang terkait.

Debugging yang Lebih Mudah

Ketika sesuatu salah dengan CSS kritis inline, debugging terkenal sulit. Halaman mungkin merender secara tidak benar, lalu tiba-tiba “meloncat” ketika lembar gaya penuh dimuat. Gaya mungkin duplikat, bertentangan, atau hilang. Satu file CSS menghilangkan seluruh kelas skenario debugging ini.

85%
of CSS performance issues reported by developers stem from delivery strategy, not file size, according to GitHub’s RUM analysis

Mengoptimalkan CSS yang Anda Kirim

Menerima bahwa “mengirim lebih banyak CSS” bisa lebih cepat bukanlah izin untuk mengabaikan kualitas CSS. CSS yang Anda kirim dalam satu file itu harus sebersih, seefisien, dan setujuan mungkin. Berikut cara memastikan CSS yang Anda konsolidasi layak di-cache.

Bersihkan Aturan yang Tidak Digunakan

Alat seperti PurgeCSS dan utilitas khusus kerangka kerja (mode JIT Tailwind, misalnya) menghapus aturan CSS yang tidak digunakan dalam proyek Anda. Ini sangat penting ketika mengonsolidasi CSS di seluruh situs, Anda tidak ingin aturan untuk komponen yang sudah tidak ada lagi.

Optimalkan Efisiensi Selektor

Selektor kompleks (.nav ul li a span) memerlukan lebih banyak kerja bagi browser untuk mengevaluasi daripada yang lebih sederhana (.nav-link). Meskipun dampak kinerja selektor sering dibesar-besarkan, tetap penting untuk menjaga selektor Anda tetap ramping.

Minifikasi dan Kompresi

Minifikasi CSS menghilangkan spasi, komentar, dan karakter redundan. Kompresi Gzip atau Brotli kemudian mengurangi ukuran yang ditransfer sebesar 60–80%. File CSS 200KB yang tidak diminifikasi mungkin hanya 40KB setelah di-gzip, unduhan yang sepele bahkan pada koneksi yang sederhana.

Bagaimana DivMagic Cocok dalam Alur Kerja CSS yang Mengutamakan Kinerja

Salah satu aspek paling memakan waktu dalam membangun dengan CSS adalah membuat ulang komponen UI dari situs web yang Anda kagumi. Anda melihat tombol yang indah, navbar yang dirancang dengan baik, atau tata letak kartu yang kompleks, dan Anda menghabiskan berjam-jam untuk merekayasa balik CSS untuk mereplikasinya.

Proses ini memiliki biaya tersembunyi: CSS yang Anda tulis selama rekayasa balik seringkali kurang efisien dari aslinya. Anda menyertakan aturan redundan, Anda melewatkan kaskade cerdas dari aslinya, atau Anda membuat selektor terlalu spesifik untuk mencocokkan hasil visual. Hasilnya adalah CSS yang menggembung yang merusak peningkatan kinerja yang ingin Anda capai.

Di sinilah DivMagic mengubah alur kerja. Alih-alih merekonstruksi CSS secara manual, DivMagic memungkinkan Anda menyalin elemen UI yang tepat, dengan CSS-nya, langsung dari situs web mana pun. Outputnya adalah CSS asli tingkat produksi yang digunakan situs asli, bukan perkiraan.

“Berhenti merekayasa balik UI. Salin CSS yang tepat dari situs web mana pun dan kirimkan gaya tingkat produksi dalam hitungan detik, bukan jam.”

Manfaat kinerjanya ada dua: Anda menghabiskan lebih sedikit waktu menulis CSS, dan CSS yang Anda kirim lebih bersih dan lebih efisien karena itu adalah lembar gaya asli yang dioptimalkan, bukan perkiraan tulisan tangan.

Dari Salin ke Dapat Di-cache: Alur Kerja Praktis

Berikut adalah alur kerja praktis yang menggabungkan DivMagic dengan strategi “kirim lebih banyak CSS” dari GitHub:

Langkah 1: Gunakan DivMagic untuk menyalin komponen UI dari situs referensi. Ekstrak HTML dan CSS yang tepat untuk setiap elemen yang Anda butuhkan.

Langkah 2: Gabungkan gaya yang disalin ke dalam satu stylesheet yang koheren. Atur secara logis, selesaikan konflik apa pun, dan pastikan konvensi penamaan yang konsisten.

Langkah 3: Bersihkan aturan yang tidak digunakan menggunakan PurgeCSS atau alat bawaan framework Anda. Hapus apa pun yang tidak digunakan secara aktif dalam proyek Anda.

Langkah 4: Sajikan CSS yang telah digabungkan sebagai satu file dengan header cache yang kuat (Cache-Control: public, max-age=31536000, immutable untuk file yang memiliki versi).

Langkah 5: Deploy di belakang CDN yang mendukung HTTP/2 dan kompresi Brotli.

Alur kerja ini mencapai yang terbaik dari kedua dunia: Anda mengirimkan CSS berkualitas produksi yang tidak perlu Anda tulis dari awal, dan Anda menyampaikannya menggunakan strategi caching yang menurut data GitHub adalah yang tercepat untuk kunjungan berulang.

Mengukur Dampak di Proyek Anda Sendiri

Satu-satunya cara untuk mengetahui apakah pendekatan GitHub berhasil untuk proyek spesifik Anda adalah dengan mengukurnya. Untungnya, alat untuk melakukannya tersedia secara luas dan mudah diterapkan.

Pemantauan Pengguna Nyata (RUM)

Alat seperti Google Analytics, Sentry Performance, dan New Relic Browser menyediakan data pengguna nyata tentang Core Web Vitals. Lacak FCP, TTI, dan CLS untuk pengunjung pertama kali dan pengunjung berulang. Metrik pengunjung berulang adalah tempat Anda akan melihat perbedaan paling dramatis dari strategi CSS yang di-cache.

Pengujian Sintetis

Lighthouse, WebPageTest, dan alat serupa menyediakan pengukuran yang terkontrol dan dapat direproduksi. Meskipun tidak menangkap perilaku caching dari kunjungan berulang, alat-alat ini berguna untuk mengidentifikasi hambatan yang jelas dan memverifikasi bahwa strategi pengiriman CSS Anda berfungsi seperti yang diharapkan.

Pengujian A/B Strategi Pengiriman CSS

Pendekatan yang paling ketat adalah dengan menguji A/B berbagai strategi pengiriman CSS. Sajikan setengah pengguna Anda dengan pendekatan CSS kritis inline tradisional dan setengah lainnya dengan satu file yang di-cache, lalu bandingkan metrik RUM. Ini menghilangkan tebakan dan memberi Anda data spesifik untuk basis pengguna Anda.

2.4s
average FCP improvement on repeat visits when switching from inline critical CSS to a single cached stylesheet, based on GitHub’s measured results

Masa Depan Kinerja CSS

Temuan GitHub adalah bagian dari pergeseran yang lebih luas dalam cara komunitas frontend berpikir tentang kinerja. Era mikro-optimasi byte mulai digantikan oleh pandangan yang lebih holistik yang memprioritaskan caching, jumlah permintaan, dan pengalaman total pengguna di berbagai kunjungan.

Beberapa tren mendukung evolusi ini:

  • HTTP/3 dan QUIC: Generasi berikutnya dari protokol HTTP semakin mengurangi overhead permintaan individu, membuat strategi “lebih sedikit, permintaan yang lebih besar” semakin menguntungkan
  • Peningkatan caching browser: Browser menjadi lebih canggih dalam perilaku caching mereka, membuat strategi cache-first lebih andal
  • Keberadaan CDN di mana-mana: Jaringan pengiriman konten kini menjadi infrastruktur standar, membuat aset yang di-cache di edge menjadi jauh lebih cepat untuk disajikan
  • Evolusi CSS-in-JS: Framework seperti styled-components dan Emotion bergerak menuju ekstraksi statis, mengaburkan batas antara optimasi CSS dan JavaScript

Kesimpulan: Jalur Kontraintuitif menuju CSS yang Lebih Cepat

Penemuan “kirim lebih banyak CSS” GitHub adalah pengingat bahwa optimasi kinerja jarang sesederhana yang terlihat. Kebijaksanaan konvensional, inline CSS kritis, code-split stylesheet Anda, minimalkan setiap byte, muncul di era dengan kendala dan browser yang berbeda. Di web modern, dengan HTTP/2, caching canggih, dan CDN yang ada di mana-mana, kalkulus telah bergeser.

Intinya bukanlah bahwa Anda harus mengirimkan CSS yang bengkak. Melainkan bahwa strategi pengiriman CSS lebih penting daripada ukuran file CSS. Satu stylesheet yang terorganisir dengan baik dan dapat di-cache, meskipun lebih besar dari minimum teoretis, dapat memberikan pengalaman pengguna yang lebih baik daripada sistem yang sangat dioptimalkan yang mengirim ulang gaya inline pada setiap permintaan.

Bagi pengembang frontend, implikasinya membebaskan: sederhanakan pengiriman CSS Anda, fokus pada caching, prioritaskan kinerja kunjungan berulang, dan belanjakan anggaran optimasi Anda di tempat yang benar-benar penting. Dan dalam hal membangun CSS itu sendiri, alat seperti DivMagic menghilangkan berjam-jam rekayasa balik manual yang sering kali memperkenalkan pembengkakan sejak awal.

Kirim lebih banyak CSS. Kirim dengan cerdas.

Mulai Membangun dengan DivMagic Sekarang

Bergabunglah dengan 10.000+ pengembang, desainer, dan pemilik bisnis untuk menyalin kode dari situs web mana pun dan menggunakannya dalam proyek mereka sendiri.

Get DivMagic for 42% off

Limited time deal for 22:45