BinaryAST: projekt Cloudflare, Mozilla a Facebook na urýchlenie načítania JavaScriptu

binárne-ast

undefined inžinieri zo spoločností Cloudflare, Mozilla, Facebook a Bloomberg začali pracovať na nový projekt s názvom „binárne AST" na urýchlenie doručenia a spracovania kódu JavaScript pri otváraní stránok vo webových prehliadačoch.

BinaryAST berie fázu syntézy na stranu servera a dodáva už vygenerovaný abstraktný strom syntaxe (AST). Po prijatí BinaryAST môže prehliadač okamžite prejsť do fázy kompilácie bez nutnosti analýzy zdrojového kódu JavaScriptu.

Na testovanie bola pripravená referenčná implementácia pripravená na základe licencií MIT. Komponenty Node.js sa používajú na analýzu kódu na optimalizáciu a generovanie AST, píše sa v Rust.

Kodér v BinaryAST sa dá použiť ako na úrovni sady nástrojov koncového servera, tak aj na zabalenie skriptov externých serverov na strane proxy alebo v sieti na doručovanie obsahu.

V súčasnosti, proces štandardizácie BinaryAST pracovnou skupinou ECMA TC39 už začal, po ktorom bude formát schopný koexistovať s existujúcimi metódami kompresie dodávaného obsahu, ako sú gzip a brotli.

Na načítanie webových stránok má vplyv toľko súborov Javascript

Načítanie a analýza kódu trvá pomerne dlho počas spracovania JavaScriptu.

Vzhľadom na to, že objem JavaScriptu bol načítaný na mnohých populárnych stránkach je takmer 10 MB (napríklad pre LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), proces Počiatočný JavaScript zavádza značné oneskorenie.

Spomalí sa aj analytická fáza na strane prehliadača z dôvodu nemožnosti vytvoriť AST za chodu počas načítania kódu (prehliadač musí čakať na načítanie blokov kódu, napríklad na koniec funkcií, aby získal chýbajúce informácie na analýzu aktuálnych prvkov).

Čiastočne sa snažia problém vyriešiť distribúciou kódu v minimalizovanej a komprimovanej podobe, ako aj ukladaním do medzipamäte vygenerovanej prehliadačom.

Binárne-ast-1

Zatiaľ čo na moderných stránkach sa kód aktualizuje pomerne často, takže problém s vyrovnávacou pamäťou rieši iba čiastočne.

Riešením môže byť WebAssembly, vyžaduje si však výslovné použitie zápisu do kódu a nie je to veľmi vhodné na urýchlenie spracovania existujúceho kódu JavaScript.

Ďalšou možnosťou je dodať pripravený skompilovaný kód namiesto skriptov v jazyku JavaScript, vývojári prehľadávacích strojov sú však proti, pretože je ťažké overiť kód tretej strany, jeho priame spracovanie môže viesť k oddeleniu od webu., Vznikajú ďalšie bezpečnostné hrozby. .

Riešením je BinaryAST

BinaryAST umožňuje integráciu do súčasného vývojového modelu a dodanie kódu bez vytvorenia nového bajtkódu a bez zmeny jazyka JavaScript.

Veľkosť dát vo formáte BinaryAST je porovnateľná s minifikovaným kódom JavaScript a komprimované a rýchlosť spracovania v dôsledku vylúčenia fázy analýzy zdroja sa pozoruhodne zvyšuje.

Formát tiež umožňuje kompiláciu do bytecode ako načítanie BinaryAST bez čakania na dokončenie všetkých údajov.

Funkciou BinaryAST je tiež schopnosť obnoviť čitateľný JavaScript, nie jedna k jednej, ktorá sa zhoduje s pôvodnou verziou, ale je sémanticky ekvivalentná a obsahuje rovnaké názvy premenných a funkcií (BinaryAST uloží názvy, ale neuloží informácie o polohe v kóde, formátovaní a komentároch).

Druhou stranou mince je vzhľad nových vektorov pre útoky, ktoré sú však podľa vývojárov podstatne menšie a kontrolovateľnejšie ako pri použití alternatív, napríklad distribúcie bajtových kódov.

Testovanie facebookového kódu ukázalo 10 - 15% zdrojov CPU utrácajú sa za syntaktickú analýzu JavaScriptu a ich analýza trvá dlhšie ako generovanie bytecode a počiatočné generovanie kódu pre JIT.

Podpora Aplikácia BinaryAST je teraz k dispozícii v nočných verziách prehliadača Firefox.

Fuente: https://blog.cloudflare.com


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.