Krisis Prestasi GitHub di Safari: Pasukan WebKit Mengeluarkan Pembaikan Kecemasan untuk Antara Muka Web yang Tidak Boleh Digunakan

Pasukan Komuniti BigGo
Krisis Prestasi GitHub di Safari: Pasukan WebKit Mengeluarkan Pembaikan Kecemasan untuk Antara Muka Web yang Tidak Boleh Digunakan

Pengguna GitHub telah bergelut dengan masalah prestasi yang teruk di Safari selama berbulan-bulan, dengan platform ini menjadi hampir tidak boleh digunakan untuk tugas pembangunan asas. Masalah ini telah mencapai tahap kritikal sehingga pembangun yang menggunakan perkakasan mewah seperti MacBook Pro M4 dan Mac Studio dengan RAM 64GB mengalami kelembapan yang ketara ketika melihat permintaan tarik atau melayari fail kod.

Krisis prestasi ini berpunca daripada peralihan GitHub daripada pemaparan sisi pelayan kepada seni bina aplikasi satu halaman berasaskan React. Peralihan ini telah mewujudkan ribut sempurna ketidakcekapan, terutamanya menjejaskan pengguna Safari yang menghadapi kesan utama masalah keserasian antara enjin pemaparan pelayar dan antara muka berat JavaScript GitHub.

Laporan Perkakasan Terjejas:

  • M4 MacBook Pro dengan RAM 64GB: Masih mengalami kelembapan teruk
  • M3 MacBook Pro: Fungsi carian berhenti berfungsi pada fail besar
  • Mac Studio M4 Max dengan RAM 64GB: Lebih perlahan daripada MacBook Pro 2011 untuk tugas yang sama
  • 16-inci MacBook Pro dengan 32-teras Apple Silicon Max: Prestasi tidak boleh digunakan

Punca Akar: Keputusan Seni Bina yang Salah

Isu teras bermula daripada keputusan GitHub untuk meninggalkan sistem pemaparan sisi pelayan mereka yang sebelum ini pantas demi pendekatan berasaskan React. Perbincangan komuniti mendedahkan bahawa GitHub sebelum ini mengendalikan penyerlahan sintaks di pelayan, menyampaikan kandungan yang telah diproses terlebih dahulu yang boleh dipaparkan dengan pantas oleh pelayar. Kini, platform ini menghantar teks mentah yang tidak diserlahkan yang mesti diproses di sisi klien, membebankan pelayar dengan tugas pemaparan yang kompleks.

Perubahan seni bina ini telah mengakibatkan permintaan tarik menghasilkan lebih 100,000 nod DOM, kebanyakannya adalah elemen SVG sebaris yang tidak kelihatan tetapi masih menggunakan kuasa pemprosesan. Masalah ini menjadi sangat akut ketika melihat permintaan tarik yang besar dengan beribu-ribu baris yang diubah, di mana proses pemaparan Safari memaksimumkan penggunaan CPU dan menyebabkan antara muka menjadi tidak responsif sepenuhnya.

Nod DOM adalah elemen individu dalam struktur halaman web, seperti teks, imej, atau elemen pemformatan yang mesti dijejaki dan dipaparkan oleh pelayar.

Perbandingan Kesan Prestasi:

  • Sebelum Migrasi React: Pemaparan sisi pelayan yang pantas, penyerlahan sintaks diproses di pelayan, prestasi baik pada perkakasan lama
  • Selepas Migrasi React: Pemprosesan sisi klien, 100,000+ nod DOM bagi setiap PR besar, penggunaan CPU pada 100% di Safari
  • Prestasi Pelayar: Chrome menunjukkan prestasi lebih baik berbanding Safari, Firefox menunjukkan prestasi yang baik, Safari hampir tidak boleh digunakan untuk PR besar

Cabaran Khusus Safari

Walaupun prestasi GitHub telah merosot merentas semua pelayar, pengguna Safari menghadapi cabaran unik disebabkan perbezaan dalam cara pelayar mengendalikan operasi CSS dan DOM. Penambahbaikan terkini yang digabungkan oleh pasukan WebKit secara khusus menyasarkan masalah prestasi CSS yang menyebabkan antara muka GitHub menjadi perlahan di Safari.

Perbezaan pelayar telah menjadi sangat ketara sehingga ramai pembangun melaporkan beralih kepada Chrome atau Firefox khusus untuk penggunaan GitHub, walaupun lebih suka Safari untuk pelayaran web lain. Sesetengah pengguna telah mendapati bahawa memuat semula halaman secara paksa sebenarnya lebih pantas daripada menggunakan navigasi aplikasi satu halaman GitHub, menonjolkan ketidakcekapan asas dalam sistem semasa.

Kos Tersembunyi Pembangunan Web Moden

Situasi GitHub mencerminkan isu yang lebih luas dalam amalan pembangunan web kontemporari. Masalah prestasi platform ini tidak terhad kepada Safari - pengguna melaporkan isu serupa merentas pelayar, dengan Chrome pun bergelut pada permintaan tarik yang besar. Ini menunjukkan bahawa seni bina asas, bukannya pepijat khusus pelayar, adalah dalang utama.

Pengalaman SSR GitHub yang lama sangat baik. Anda boleh menyemak PR yang besar pada mana-mana mesin sebelum mereka membuat perpindahan.

Menariknya, GitHub mengekalkan keupayaan untuk membolehkan pemaparan sisi pelayan untuk akaun pengguna tertentu, seperti yang dibuktikan oleh respons mereka terhadap aduan prestasi sebelum ini. Walau bagaimanapun, ciri ini kekal tersembunyi daripada pengguna umum, menimbulkan persoalan mengapa syarikat itu tidak kembali kepada pendekatan yang lebih pantas secara lebih meluas.

Penyelesaian Tersembunyi GitHub :

  • Bendera server-side rendering (SSR) tersedia untuk akaun individu
  • SSR memberikan prestasi yang jauh lebih baik
  • Ciri ini tidak tersedia secara umum dalam tetapan pengguna
  • GitHub boleh mengaktifkan SSR atas permintaan untuk aduan prestasi

Pembaikan Kecemasan dan Pandangan Masa Depan

Pasukan WebKit baru-baru ini telah menolak penambahbaikan prestasi kritikal yang secara khusus menyasarkan masalah prestasi GitHub di Safari. Pembaikan ini memfokuskan pada pengoptimuman pemaparan CSS yang sepatutnya memberikan kelegaan segera untuk pengguna Safari yang mengalami kelembapan terburuk.

Walau bagaimanapun, masalah seni bina asas kekal tidak diselesaikan. Sehingga GitHub menangani isu teras dengan pelaksanaan React mereka atau menyediakan pengguna dengan pilihan untuk menggunakan pemaparan sisi pelayan, pembangun berkemungkinan akan terus mengalami kekecewaan dengan prestasi platform, terutamanya ketika bekerja dengan pangkalan kod yang besar atau permintaan tarik yang kompleks.

Situasi ini berfungsi sebagai kisah amaran tentang kepentingan ujian prestasi merentas pelayar dan konfigurasi perkakasan yang berbeza semasa peralihan seni bina utama. Buat masa ini, pengguna yang terjejas mungkin perlu bergantung pada pelayar alternatif atau menunggu pengoptimuman selanjutnya daripada kedua-dua GitHub dan vendor pelayar.

Rujukan: The Github website is extremely slow on Safari #170758