BinaryAST: proyek Cloudflare, Mozilla, dan Facebook untuk mempercepat pemuatan JavaScript

biner-ast

Los insinyur dari Cloudflare, Mozilla, Facebook dan Bloomberg sudah mulai bekerja sebuah proyek baru bernama "BinerAST" untuk mempercepat pengiriman dan pemrosesan kode JavaScript saat membuka situs di browser web.

BinaryAST mengambil fase penguraian ke sisi server dan mengirimkan Pohon Sintaks Abstrak (AST) yang sudah dibuat. Setelah menerima BinaryAST, browser dapat langsung masuk ke tahap kompilasi, tanpa melalui analisis kode sumber JavaScript.

Implementasi referensi yang disiapkan di bawah lisensi MIT telah disiapkan untuk pengujian.Komponen Node.js digunakan untuk menganalisis kode untuk mengoptimalkan dan menghasilkan AST, yang ditulis dalam Rust.

Encoder di BinaryAST dapat digunakan di tingkat toolkit situs akhir dan untuk mengemas skrip situs eksternal di sisi proxy atau jaringan pengiriman konten.

Saat ini, proses standardisasi BinaryAST oleh kelompok kerja ECMA TC39 telah dimulai, setelah itu format akan dapat berdampingan dengan metode yang ada untuk mengompresi konten yang dikirim, seperti gzip dan brotli.

Begitu banyak file javascript mempengaruhi pemuatan halaman web

Waktu yang cukup lama selama pemrosesan JavaScript membutuhkan fase memuat dan mengurai kode.

Mengingat fakta bahwa volume JavaScript dimuat di banyak situs populer mendekati 10 MB (misalnya, untuk LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), proses Inisial JavaScript menyebabkan penundaan yang signifikan.

Tahap analitik di sisi browser juga melambat karena ketidakmampuan untuk membuat AST dengan cepat saat kode sedang dimuat (browser harus menunggu pemuatan blok kode, misalnya akhir fungsi, untuk mendapatkan informasi yang hilang untuk mengurai elemen saat ini).

Sebagian, mereka mencoba memecahkan masalah dengan mendistribusikan kode dalam bentuk yang diperkecil dan dikompresi, serta dengan caching yang dihasilkan oleh browser.

Biner-ast-1

Sedangkan di situs modern, kode cukup sering diperbarui sehingga caching hanya menyelesaikan sebagian masalah.

Solusinya dapat berupa WebAssembly, tetapi memerlukan penggunaan tertulis dalam kode secara eksplisit dan tidak cocok untuk mempercepat pemrosesan kode JavaScript yang ada.

Pilihan lainnya adalah mengirimkan kode yang telah dikompilasi sebagai pengganti skrip JavaScript, tetapi pengembang mesin browser menentangnya, karena kode pihak ketiga sulit untuk diverifikasi, pemrosesan langsungnya dapat menyebabkan pemisahan dari web., Ancaman keamanan tambahan muncul .

BinaryAST adalah solusinya

BinaryAST memungkinkan integrasi ke dalam model pengembangan saat ini dan pengiriman kode tanpa membuat bytecode baru dan tanpa mengubah bahasa JavaScript.

Ukuran data dalam format BinaryAST sebanding dengan kode JavaScript yang diperkecil dan dikompresi dan kecepatan pemrosesan karena pengecualian fase analisis sumber sangat meningkat.

Selain itu, format ini memungkinkan kompilasi ke bytecode saat BinaryAST dimuat, tanpa menunggu semua data selesai.

Salah satu fitur BinaryAST adalah juga kemampuan untuk mengembalikan JavaScript yang dapat dibaca, bukan one-to-one yang cocok dengan versi aslinya, tetapi secara semantik setara dan menyertakan variabel dan nama fungsi yang sama (BinaryAST menyimpan nama, tetapi tidak menyimpan informasi posisi dalam kode, pemformatan, dan komentar).

Sisi lain dari koin adalah munculnya vektor baru untuk serangan, tetapi menurut pengembang, vektor-vektor tersebut secara signifikan lebih kecil dan lebih dapat dikontrol daripada dengan penggunaan alternatif, seperti distribusi kode byte.

Pengujian kode facebook menunjukkan 10-15% sumber daya CPU mereka dihabiskan untuk penguraian JavaScript dan membutuhkan waktu lebih lama untuk mengurai daripada menghasilkan bytecode dan pembuatan kode awal untuk JIT.

Dukungan dari BinaryAST sekarang tersedia dalam versi Nightly Firefox.

sumber: https://blog.cloudflare.com


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.