GitHub , platform hosting kod terbesar di dunia, sedang menghadapi kritikan yang semakin meningkat daripada pembangun perisian kerana kemerosotan prestasi yang teruk yang telah mengubah interaksi yang dahulunya pantas menjadi pengalaman yang sangat perlahan dan mengecewakan. Apa yang dahulunya merupakan peralihan halaman serta-merta kini mengambil masa lebih daripada 5 saat, dengan beberapa operasi menjadi hampir tidak boleh digunakan pada platform yang menempatkan berjuta-juta projek perisian.
Isu prestasi ini berpunca daripada migrasi berterusan GitHub daripada seni bina JavaScript vanilla asal dan komponen web mereka kepada aplikasi halaman tunggal (SPA) berasaskan React . Peralihan ini, yang bermula beberapa tahun lalu, telah memperkenalkan overhed yang ketara yang menjadikan operasi asas seperti menukar antara tab pull request atau melihat diff kod menjadi sangat perlahan.
Perbandingan Prestasi:
- Pertukaran tab GitHub : 5+ saat
- Membuka halaman yang sama dalam tab baharu: ~2.5 saat (2x lebih pantas)
- Masa pemprosesan bahagian klien: Lebih lama daripada pemuatan HTML pelayan
- Had kebolehgunaan pemapar perbezaan: ~5,000 baris perubahan
Migrasi React Mencipta Lebih Banyak Masalah Daripada Penyelesaian
Isu teras terletak pada pelaksanaan GitHub bagi penghalaan sebelah klien menggunakan React dan Turbo untuk peralihan halaman. Walaupun teknologi ini bertujuan untuk mencipta pengalaman pengguna yang lebih lancar dengan mengelakkan pemuatan semula halaman penuh, ia telah mencapai kesan yang sebaliknya. Analisis komuniti mendedahkan bahawa pemprosesan sebelah klien kini mengambil masa lebih lama daripada sekadar memuatkan HTML daripada pelayan - satu kegagalan asas pendekatan SPA.
Ironinya sangat ketara apabila mempertimbangkan bahawa membuka halaman GitHub dalam tab baharu sebenarnya dua kali lebih pantas daripada menavigasi melalui aplikasi halaman tunggal. Ini menggagalkan keseluruhan tujuan penghalaan sebelah klien, yang sepatutnya menyediakan peralihan serta-merta antara halaman.
Pemapar Diff Menjadi Tidak Boleh Digunakan untuk Fail Besar
Salah satu ciri yang paling terjejas ialah pemapar diff GitHub , yang bergelut dengan fail yang mengandungi lebih daripada beberapa ribu baris perubahan. Sistem cuba untuk merender bilangan nod DOM yang besar - kadang-kadang lebih 100,000 - menyebabkan pelayar terhenti selama beberapa saat. Malah operasi mudah seperti mengubah saiz alat pembangun boleh mengunci antara muka selama 3+ saat.
Masalah ini diburukkan lagi oleh amalan rendering yang tidak cekap, seperti mencipta ribuan butang yang tidak kelihatan dengan ikon SVG sebaris yang sama. Pilihan pelaksanaan ini mencipta overhed pengiraan yang tidak perlu yang sukar dikendalikan oleh pelayar moden dengan cekap.
Isu Teknikal yang Dikenal Pasti:
- Lebih 100,000 nod DOM dipaparkan dalam sesetengah paparan
- Beribu-ribu butang yang tidak kelihatan dengan ikon SVG sebaris yang sama
- 14+ permintaan API untuk halaman gambaran keseluruhan fail yang mudah
- 5+ permintaan API GraphQL untuk senarai isu
- Pembekuan pelayar selama 3 saat semasa mengubah saiz tetingkap
![]() |
---|
Analisis prestasi penampil diff GitHub menyerlahkan isu yang dihadapi semasa merender fail besar, seperti yang dibincangkan dalam artikel |
Kekacauan Navigasi dan Ciri Asas yang Rosak
Selain daripada isu prestasi, migrasi React GitHub telah merosakkan ciri pelayaran web asas yang telah dipercayai pengguna selama beberapa dekad. Butang kembali pelayar kini berkelakuan tidak dapat diramal, kadang-kadang melompat beberapa langkah dalam sejarah atau memuatkan halaman rosak yang tidak pernah selesai dirender. Ciri seperti Ctrl+Enter untuk membuka pautan dalam tab baharu telah berhenti berfungsi secara misteri.
Segala-galanya telah menjadi lebih teruk sejak penulisan semula React. Segala-galanya menjadi lebih perlahan dan janggal. Dan perkara seperti 'butang kembali' terus bertindak pelik.
Masalah ini meluas kepada pelayar mudah alih juga, di mana GitHub menjadi sama sekali tidak boleh digunakan pada Safari untuk iOS selama tempoh 9-12 bulan, menghalang pengguna daripada melihat kod atau mengambil bahagian dalam perbincangan tanpa beralih kepada pelayar alternatif.
Ciri-ciri yang Rosak:
- Navigasi butang undur/maju pelayar
- Ctrl+Enter untuk membuka pautan dalam tab baharu
- Keserasian Safari iOS (tempoh gangguan 9-12 bulan)
- Pengekalan kedudukan skrol semasa peralihan halaman
- Kemas kini komen masa nyata dalam perbincangan
Punca Akar Teknikal
Masalah prestasi ini dapat dikesan kembali kepada perbezaan asas dalam cara React mengendalikan pengurusan keadaan berbanding dengan kerangka kerja moden lain. Model reaktiviti terbalik React bermakna keseluruhan fungsi komponen berfungsi sebagai panggilan balik reaktif, memerlukan pembangun untuk secara eksplisit memilih keluar daripada perubahan keadaan dan bukannya memilih masuk. Pendekatan ini menjadi semakin bermasalah pada skala besar, kerana ia memerlukan pengoptimuman yang teliti melalui teknik memoization yang diabaikan oleh ramai pembangun.
Sementara itu, kerangka kerja seperti Vue , Svelte , dan Solid menggunakan reaktiviti berasaskan isyarat yang menyasarkan pelanggan khusus, menghasilkan kemas kini yang lebih cekap. Pilihan GitHub untuk React , walaupun popular untuk tujuan pengambilan pekerja, telah mencipta hutang teknikal yang menjelma sebagai pengalaman pengguna yang lemah.
Komuniti Mencari Alternatif
Pengalaman yang merosot telah mendorong beberapa pembangun untuk mencari alternatif. Penyelesaian yang dihoskan sendiri seperti Gitea dan Forgejo semakin mendapat perhatian kerana kelajuan dan kebolehpercayaan mereka, walaupun mereka tidak mempunyai kesan rangkaian dan kelengkapan ciri GitHub . Beberapa usahawan sedang membina alternatif UI GitHub yang menjanjikan prestasi yang lebih baik sambil mengekalkan keserasian dengan API GitHub .
Situasi ini menyerlahkan trend yang lebih luas dalam pembangunan web di mana mengejar amalan pembangunan moden kadang-kadang datang dengan mengorbankan pengalaman pengguna. Memandangkan GitHub terus menjadi platform utama untuk pembangunan sumber terbuka dan kerjasama kod perusahaan, isu prestasi ini mempengaruhi berjuta-juta pembangun di seluruh dunia yang bergantung pada platform untuk kerja harian mereka.
Pasukan kejuruteraan GitHub mengakui masalah prestasi dan telah menjalankan usaha merentas pasukan selama setahun untuk menanganinya, walaupun penambahbaikan yang ketara masih sukar dicapai. Sehingga perubahan besar dibuat, pembangun mesti terus menavigasi platform yang telah berubah daripada infrastruktur yang boleh dipercayai kepada halangan yang semakin mengecewakan dalam aliran kerja mereka.