Cloudflare, Mozilla u Facebook jiżviluppaw BinaryAST biex iħaffu t-tagħbija JavaScript

Inġiniera minn Cloudflare, Mozilla, Facebook u Bloomberg offruti format ġdid BinarjuAST biex tħaffef il-kunsinna u l-ipproċessar tal-kodiċi JavaScript meta tiftaħ is-siti f'browser. BinaryAST imexxi l-fażi tal-parsing lejn in-naħa tas-server u jipprovdi siġra tas-sintassi astratta diġà ġġenerata (AST). Malli jirċievi BinaryAST, il-browser jista 'minnufih jipproċedi għall-istadju ta' kumpilazzjoni, billi jinjora l-parsing tal-kodiċi tas-sors JavaScript.

Għall-ittestjar ippreparat implimentazzjoni ta' referenza pprovduta taħt il-liċenzja MIT. Il-komponenti Node.js jintużaw għall-parsing, u l-kodiċi għall-ottimizzazzjoni u l-ġenerazzjoni AST huwa miktub f'Rut. Appoġġ fuq in-naħa tal-browser
BinaryAST huwa diġà disponibbli fi bini filgħaxija Firefox. L-encoder f'BinaryAST jista 'jintuża kemm fil-livell tal-għodda tas-sit finali kif ukoll għall-iskripts tal-ippakkjar ta' siti esterni fuq in-naħa ta 'prokura jew netwerk ta' kunsinna tal-kontenut. Bħalissa, il-proċess ta 'standardizzazzjoni ta' BinaryAST mill-grupp ta 'ħidma diġà beda ECMA TC39, wara li l-format ikun jista' jeżisti flimkien ma' metodi eżistenti ta' kompressjoni tal-kontenut, bħal gzip u brotli.

Cloudflare, Mozilla u Facebook jiżviluppaw BinaryAST biex iħaffu t-tagħbija JavaScript

Cloudflare, Mozilla u Facebook jiżviluppaw BinaryAST biex iħaffu t-tagħbija JavaScript

Meta tipproċessa JavaScript, jintefaq ammont sinifikanti ta 'ħin fil-fażi tat-tagħbija u tal-parsing tal-kodiċi. Meta wieħed iqis li l-volum ta 'JavaScript imniżżel fuq bosta siti popolari huwa qrib 10 MB (per eżempju, għal LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), l-ipproċessar inizjali ta' JavaScript jintroduċi dewmien sinifikanti. L-istadju tal-parsing fuq in-naħa tal-brawżer huwa wkoll imnaqqas minħabba l-inabbiltà li tinbena bis-sħiħ l-AST fuq il-fly hekk kif il-kodiċi jitgħabba (il-browser irid jistenna li l-blokki tal-kodiċi jlestu t-tagħbija, bħat-tmiem tal-funzjonijiet, biex jikseb l-informazzjoni nieqsa biex jiġu analizzati l-elementi attwali).

Huma qed jippruvaw isolvu parzjalment il-problema billi jqassmu l-kodiċi f'forma mnaqqsa u kkompressata, kif ukoll billi jqiegħdu fil-caching il-bytecode iġġenerat mill-browser. Fuq siti moderni, il-kodiċi huwa aġġornat pjuttost ta 'spiss, għalhekk il-caching biss issolvi parzjalment il-problema. WebAssembly jista 'jkun soluzzjoni, iżda jeħtieġ ittajpjar espliċitu fil-kodiċi u mhuwiex adattat tajjeb biex jitħaffef l-ipproċessar tal-kodiċi JavaScript eżistenti.

Għażla oħra hija li jitwassal bytecode ikkumpilat lest minflok skripts JavaScript, iżda l-iżviluppaturi tal-magna tal-browser huma kontriha minħabba li l-bytecode ta 'parti terza huwa diffiċli biex jiġi vverifikat, l-ipproċessar dirett tiegħu jista' jwassal għal stratifikazzjoni tal-Web, jinqalgħu riskji ta 'sigurtà addizzjonali, u l-iżvilupp ta' huwa meħtieġ format ta' bytecode universali.

BinaryAST jippermettilek li tidħol fil-mudell attwali tal-iżvilupp u l-kunsinna tal-kodiċi tiegħek mingħajr ma toħloq bytecode ġdid jew tibdel il-lingwa JavaScript. Id-daqs tad-dejta fil-format BinaryAST huwa komparabbli mal-kodiċi JavaScript minifikat kompressat, u l-veloċità tal-ipproċessar billi telimina l-fażi tal-parsing tat-test sors tiżdied b'mod notevoli. Barra minn hekk, il-format jippermetti kumpilazzjoni għal bytecode hekk kif BinaryAST jitgħabba, mingħajr ma tistenna li d-data kollha titlesta. Barra minn hekk, parsing fuq in-naħa tas-server jippermettilek teskludi funzjonijiet mhux użati u kodiċi mhux meħtieġ mir-rappreżentazzjoni BinaryAST ritornata, li, meta parsing fuq in-naħa tal-browser, ħela ta 'ħin kemm parsing kif ukoll trażmissjoni tat-traffiku mhux meħtieġ.

Karatteristika ta 'BinaryAST hija wkoll il-kapaċità li terġa' tinqara JavaScript li mhuwiex eżattament l-istess bħall-verżjoni oriġinali, iżda huwa semantikament ekwivalenti u jinkludi l-istess ismijiet ta 'varjabbli u funzjonijiet (BinaryAST jiffranka l-ismijiet, iżda ma jiffrankax informazzjoni dwar pożizzjonijiet fil- kodiċi, ifformattjar u kummenti). In-naħa l-oħra tal-munita hija l-emerġenza ta 'vettori ta' attakk ġodda, iżda skont l-iżviluppaturi, huma ħafna iżgħar u aktar kontrollabbli milli meta jintużaw alternattivi, bħad-distribuzzjoni tal-bytecode.

Testijiet tal-kodiċi facebook.com wrew li l-parsing JavaScript jikkonsma 10-15% tar-riżorsi tas-CPU u l-parsing jieħu aktar ħin milli jiġġenera bytecode u l-ġenerazzjoni tal-kodiċi inizjali għal JIT. Fil-magna SpiderMonkey, iż-żmien biex tinbena kompletament AST jieħu 500-800 ms, u l-użu ta 'BinaryAST naqqas din iċ-ċifra b'70-90%.
B'mod ġenerali, għall-biċċa l-kbira tal-logħob tan-nar tal-web, meta tuża BinaryAST, il-ħin tal-parsing ta 'JavaScript jitnaqqas bi 3-10% fil-modalità mingħajr ottimizzazzjoni u b'90-97% meta l-modalità ta' injorazzjoni ta 'funzjonijiet mhux użati hija attivata.
Meta tħaddem sett tat-test JavaScript ta '1.2 MB, l-użu ta' BinaryAST ippermetta li l-ħin tal-istartjar jitħaffef minn 338 għal 314 ms fuq sistema desktop (Intel i7) u minn 2019 għal 1455 ms fuq apparat mobbli (HTC One M8).

Sors: opennet.ru

Żid kumment