Cloudflare, Mozilla og Facebook þróa BinaryAST til að flýta fyrir hleðslu JavaScript

Verkfræðingar frá Cloudflare, Mozilla, Facebook og Bloomberg í boði nýtt snið binaryAST til að flýta fyrir afhendingu og vinnslu JavaScript kóða þegar vefsvæði eru opnuð í vafra. BinaryAST færir þáttunarfasann yfir á netþjónahliðina og útvegar þegar búið til óhlutbundið setningafræðitré (AST). Við móttöku BinaryAST getur vafrinn strax haldið áfram á söfnunarstigið, framhjá því að flokka JavaScript frumkóðann.

Til prófunar undirbúinn tilvísunarútfærslu sem fylgir MIT leyfinu. Node.js íhlutir eru notaðir við þáttun og kóðinn fyrir hagræðingu og AST kynslóð er skrifaður í Rust. Stuðningur við vafra
BinaryAST er nú þegar fáanlegt í næturbyggingar Firefox. Kóðarann ​​í BinaryAST er hægt að nota bæði á lokaverkfærastigi og til að pakka forskriftum utanaðkomandi vefsvæða á hlið proxy- eða efnisafhendingarnets. Eins og er er ferlið við stöðlun BinaryAST af vinnuhópnum þegar hafið ECMA TC39, eftir það mun sniðið geta verið samhliða núverandi efnisþjöppunaraðferðum, eins og gzip og brotli.

Cloudflare, Mozilla og Facebook þróa BinaryAST til að flýta fyrir hleðslu JavaScript

Cloudflare, Mozilla og Facebook þróa BinaryAST til að flýta fyrir hleðslu JavaScript

Við vinnslu JavaScript fer umtalsverðum tíma í hleðslu- og þáttunarfasa kóðans. Með hliðsjón af því að magn niðurhalaðs JavaScript á mörgum vinsælum síðum er nálægt 10 MB (til dæmis fyrir LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), leiðir upphafsvinnsla JavaScript til verulegrar seinkun. Einnig hægist á þáttunarstigi vaframegin vegna vanhæfni til að byggja upp AST að fullu á flugi þegar kóðinn er hlaðinn (vafrinn þarf að bíða eftir kóðablokkum til að ljúka hleðslu, svo sem lok aðgerða, til að fá upplýsingarnar sem vantar til að flokka núverandi þætti).

Þeir eru að reyna að leysa vandamálið að hluta með því að dreifa kóðanum í lágmarkað og þjappað formi, sem og með því að vista bækikóðann sem myndaður er í vafranum. Á nútíma síðum er kóðinn uppfærður nokkuð oft, svo skyndiminni leysir vandamálið aðeins að hluta. WebAssembly gæti verið lausn, en það krefst skýrrar innsláttar kóðans og hentar ekki vel til að flýta fyrir vinnslu á núverandi JavaScript kóða.

Annar valkostur er að afhenda tilbúinn samansettan bækakóða í stað JavaScript forskrifta, en vafravélaframleiðendur eru á móti því vegna þess að erfitt er að sannreyna bækikóða þriðja aðila, bein vinnsla hans getur leitt til lagskiptingar á vefnum, aukin öryggisáhætta skapast og þróun alhliða bækakóðasnið er krafist.

BinaryAST gerir þér kleift að passa inn í núverandi kóðaþróunar- og afhendingarlíkan þitt án þess að búa til nýjan bækikóða eða breyta JavaScript tungumálinu. Stærð gagna á BinaryAST sniði er sambærileg við þjappaðan smækkaðan JavaScript kóða og vinnsluhraði með því að útrýma frumtextaþáttunarfasa eykst áberandi. Að auki gerir sniðið kleift að safna saman í bætikóða þegar BinaryAST er hlaðið, án þess að bíða eftir að öll gögn ljúki. Að auki gerir þáttun á netþjóninum þér kleift að útiloka ónotaðar aðgerðir og óþarfa kóða frá BinaryAST framsetningunni sem skilað er, sem, þegar þáttun er á vafrahliðinni, eyðir tíma bæði í þáttun og sendingu óþarfa umferðar.

Eiginleiki BinaryAST er einnig hæfileikinn til að endurheimta læsilegt JavaScript sem er ekki nákvæmlega það sama og upprunalega útgáfan, en er merkingarlega jafngilt og inniheldur sömu nöfn breytna og aðgerða (BinaryAST vistar nöfn, en vistar ekki upplýsingar um stöður í kóða, snið og athugasemdir). Hin hliðin á peningnum er tilkoma nýrra árásarvigra, en að sögn þróunaraðilanna eru þeir mun minni og stjórnanlegari en þegar notaðir eru valkostir, eins og bækikóðadreifing.

Prófanir á facebook.com kóðanum sýndu að þáttun JavaScript eyðir 10-15% af CPU auðlindum og þáttun tekur meiri tíma en að búa til bætikóða og upphafskóðagerð fyrir JIT. Í SpiderMonkey vélinni tekur tíminn til að byggja algjörlega upp AST 500-800 ms og notkun BinaryAST hefur lækkað þessa tölu um 70-90%.
Almennt séð, fyrir flesta vefflugelda, þegar BinaryAST er notað, er JavaScript þáttunartími styttur um 3-10% í ham án hagræðingar og um 90-97% þegar hátturinn til að hunsa ónotaðar aðgerðir er virkur.
Þegar keyrt var 1.2 MB JavaScript prófunarsett, leyfði notkun BinaryAST ræsingartímanum að flýta úr 338 í 314 ms á skjáborðskerfi (Intel i7) og frá 2019 í 1455 ms á farsíma (HTC One M8).

Heimild: opennet.ru

Bæta við athugasemd