„BinaryAST“: „Cloudflare“, „Mozilla“ ir „Facebook“ projektas, skirtas pagreitinti „JavaScript“ įkėlimą

dvejetainis-ast

Los inžinieriai iš „Cloudflare“, „Mozilla“, „Facebook“ ir „Bloomberg“ pradėjo dirbti naujas projektas pavadinimu „„BinaryAST“" paspartinti „JavaScript“ kodo pristatymą ir apdorojimą atidarydami svetaines interneto naršyklėse.

„BinaryAST“ perkelia analizės fazę į serverio pusę ir pateikia jau sugeneruotą abstraktų sintaksės medį (AST). Gavusi „BinaryAST“, naršyklė gali nedelsdama pereiti į kompiliavimo stadiją, neatlikdama „JavaScript“ šaltinio kodo analizės.

Parengtas pagal MIT licencijas parengtas informacinis diegimas. Node.js komponentai naudojami kodui analizuoti, siekiant optimizuoti ir generuoti AST, rašoma „Rust“.

„BinaryAST“ koduotojas gali būti naudojamas tiek galutinės svetainės įrankių rinkinio lygiu, tiek išorinių svetainių scenarijų pakavimui tarpinio serverio arba turinio pristatymo tinkle.

Šiuo metu ECMA TC39 darbo grupės „BinaryAST“ standartizacijos procesas jau prasidėjo, po kurio formatas galės egzistuoti kartu su esamais pateikto turinio glaudinimo būdais, pvz., „gzip“ ir „brotli“.

Tiek daug „JavaScript“ failų daro įtaką tinklalapių įkėlimui

Ilgas „JavaScript“ apdorojimo laikas užima kodo įkėlimo ir analizavimo etapą.

Atsižvelgiant į tai, kad „JavaScript“ tūris buvo įkeltas į daugelį populiarių svetainių artėja prie 10 MB (pvz., „LinkedIn“ - 7.2 MB, „Facebook“ - 7.1 MB, „Gmail“ - 3.9 MB), procesas „JavaScript“ pradinis žymiai vėluoja.

Analizės etapas naršyklės pusėje taip pat sulėtėja dėl nesugebėjimo sukurti AST skrydžio metu, kol kodas įkeliamas (naršyklė turi laukti kodo blokų įkėlimo, pavyzdžiui, funkcijų pabaigos, kad trūkstama informacija būtų išanalizuota dabartiniuose elementuose).

Iš dalies jie bando išspręsti problemą platindami kodą sumažinta ir suglaudinta forma, taip pat talpyklą, kurią sugeneruoja naršyklė.

Dvejetainis-ast-1

Šiuolaikinėse svetainėse kodas atnaujinamas gana dažnai, todėl talpyklos talpinimas problemą išsprendžia tik iš dalies.

Sprendimas gali būti „WebAssembly“, tačiau tam reikia aiškiai naudoti kodą ir jis nėra tinkamas paspartinti esamo „JavaScript“ kodo apdorojimą.

Kita galimybė yra pateikti paruoštą kompiliuotą kodą vietoj „JavaScript“ scenarijų, tačiau naršyklės variklių kūrėjai tam priešinasi, nes trečiųjų šalių kodą sunku patikrinti, tiesioginis jo apdorojimas gali sukelti atskyrimą nuo interneto., Kyla papildomų grėsmių saugumui .

„BinaryAST“ yra sprendimas

„BinaryAST“ leidžia integruotis į dabartinį plėtros modelį ir kodo pristatymas nesukuriant naujo baitkodo ir nekeičiant „JavaScript“ kalbos.

Duomenų dydis „BinaryAST“ formatu yra palyginamas su sutrumpintu „JavaScript“ kodu ir suglaudintas, o apdorojimo greitis dėl šaltinio analizės fazės neįtraukimo pastebimai didėja.

Be to, šis formatas leidžia surinkti į baitekodą kaip „BinaryAST“ apkrovą, nelaukiant, kol visi duomenys bus baigti.

BinaryAST ypatybė yra taip pat galimybė atkurti įskaitomą „JavaScript“, ne vienas prie vieno, kuris atitinka pradinę versiją, tačiau yra semantiškai ekvivalentiškas ir apima tuos pačius kintamųjų bei funkcijų pavadinimus („BinaryAST“ išsaugo pavadinimus, bet neišsaugo informacijos apie pozicijas kode, formatavimą ir komentarus) .

Kita medalio pusė yra naujų atakų vektorių pasirodymas, tačiau, pasak kūrėjų, jie yra žymiai mažesni ir labiau valdomi nei naudojant alternatyvas, tokias kaip baitų kodų paskirstymas.

„Facebook“ kodo testavimas parodė 10-15% procesoriaus išteklių jie išleidžiami analizuojant „JavaScript“, o analizuoti užtrunka ilgiau nei generuoti JIT baito kodą ir pradinį kodą.

Parama „BinaryAST“ dabar yra „Firefox“ naktinėse versijose.

Fuente: https://blog.cloudflare.com


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.