BinaryAST: a Cloudflare, a Mozilla és a Facebook projektje a JavaScript betöltésének felgyorsítására

bináris-ast

sok mérnökök a Cloudflare-ból, a Mozillából, a Facebook-ból és a Bloombergből elkezdtek dolgozni egy új projekt „bináris AST" a JavaScript kód kézbesítésének és feldolgozásának felgyorsítása amikor webböngészőben nyit meg webhelyeket.

A BinaryAST az elemzési fázist a szerver oldalára viszi, és egy már létrehozott absztrakt szintaxisfát (AST) szállít. A BinaryAST kézhezvétele után a böngésző azonnal átmehet az összeállítás szakaszába, anélkül, hogy a JavaScript forráskódjának elemzését elvégezné.

A teszteléshez elkészült az MIT licencek alapján elkészített referencia megvalósítás. A Node.js összetevőket használják a kód elemzésére az AST optimalizálása és előállítása érdekében - írja a Rust.

A BinaryAST kódolója használható mind a véghely eszközkészlet szintjén, mind a külső webhely szkriptjeinek csomagolásához a proxy oldalon vagy a tartalomszolgáltató hálózaton.

jelenleg az ECMA TC39 munkacsoport már elindította a BinaryAST szabványosítási folyamatot, amely után a formátum együtt tud élni a szállított tartalom tömörítésének meglévő módszereivel, például a gzip és a brotli.

Ennyi javascript fájl befolyásolja a weboldalak betöltését

A JavaScript feldolgozása során jelentős idő telik el a kód betöltésének és elemzésének szakaszában.

Figyelembe véve azt a tényt, hogy a JavaScript mennyisége sok népszerű webhelyre betöltődött közel van a 10 MB-hoz (például a LinkedIn esetében - 7.2 MB, a Facebooknál - 7.1 MB, a Gmailnél - 3.9 MB), a folyamat JavaScript kezdőbetű jelentős késést vezet be.

A böngésző oldali elemzési szakasz is lelassul mivel nem lehet menet közben AST-t létrehozni, miközben a kód betöltődik (a böngészőnek meg kell várnia a kódblokkok betöltését, például a funkciók végét, hogy a hiányzó információkat megszerezhesse az aktuális elemek elemzéséhez).

Részben megpróbálják megoldani a problémát a kód minimalizált és tömörített formában történő terjesztésével, valamint a böngésző által generált gyorsítótárral.

Bináris-ast-1

Míg a modern webhelyeken a kód meglehetősen gyakran frissül, a gyorsítótárazás csak részben oldja meg a problémát.

A megoldás lehet a WebAssembly, de ehhez kifejezetten be kell írni a kódba és nem alkalmas a meglévő JavaScript-kód feldolgozásának felgyorsítására.

Egy másik lehetőség a kész fordított kód szállítása a JavaScript-szkriptek helyett, de a böngészőmotor-fejlesztők ellenzik azt, mivel a harmadik féltől származó kódot nehéz ellenőrizni, közvetlen feldolgozása elválaszthat a webtől., További biztonsági fenyegetések merülnek fel .

A BinaryAST a megoldás

A BinaryAST lehetővé teszi az integrációt a jelenlegi fejlesztési modellbe és a kód kézbesítése új bájtkód létrehozása nélkül és a JavaScript nyelvének megváltoztatása nélkül.

Az adatméret BinaryAST formátumban összehasonlítható a szűkített JavaScript kóddal és tömörítve van, és a forráselemzési szakasz kizárása miatt a feldolgozási sebesség figyelemre méltóan növekszik.

A formátum lehetővé teszi a fordítást byte-kódolásra, mint BinaryAST betöltéseket, anélkül, hogy megvárná az összes adat elkészülését.

A BinaryAST egyik jellemzője az olvasható JavaScript visszaállításának lehetősége is, nem egy az egyhez, amely megfelel az eredeti verziónak, de szemantikailag egyenértékű, és ugyanazokat a változó- és függvényneveket tartalmazza (a BinaryAST elmenti a neveket, de nem menti el a pozícióinformációkat a kódban, a formázásban és a megjegyzésekben).

Az érem másik oldala az új vektorok megjelenése a támadásokhoz, de a fejlesztők szerint ezek lényegesen kisebbek és jobban irányíthatók, mint alternatívák, például a bájtkód-terjesztés alkalmazásával.

A facebook kód tesztelése a CPU erőforrások 10-15% -át mutatta a JavaScript elemzésére költenek, és az elemzésük hosszabb ideig tart, mint a bytecode és a kezdeti kód létrehozása a JIT számára.

A támogatás A BinaryAST már elérhető a Firefox éjszakai verzióiban.

forrás: https://blog.cloudflare.com


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.