Cloudflare, Mozilla ak Facebook devlope BinaryAST pou pi vit chaje JavaScript

Enjenyè ki soti nan Cloudflare, Mozilla, Facebook ak Bloomberg ofri nouvo fòma binaryAST akselere livrezon ak pwosesis JavaScript kòd lè w ap louvri sit nan navigatè a. BinaryAST deplase faz analiz la sou bò sèvè a epi li bay yon pyebwa sentaks abstrè ki deja pwodwi (Ast). Lè yo resevwa yon BinaryAST, navigatè a ka imedyatman ale nan etap konpilasyon an, kontoune analiz kòd sous JavaScript.

Pou tès prepare aplikasyon referans yo bay anba lisans MIT. Konpozan Node.js yo itilize pou analiz, epi kòd pou optimize ak jenerasyon AST ekri nan Rust. Sipò navigatè-bò
BinaryAST deja disponib nan konstriksyon chak swa Firefox. Ankode nan BinaryAST ka itilize tou de nan nivo zouti nan fen sit la ak pou anbalaj scripts nan sit ekstèn sou bò a nan yon rezo proxy oswa livrezon kontni. Kounye a, pwosesis normalisation BinaryAST pa gwoup travay la deja kòmanse ECMA TC39, apre sa fòma a pral kapab ansanm ak metòd konpresyon kontni ki deja egziste, tankou gzip ak brotli.

Cloudflare, Mozilla ak Facebook devlope BinaryAST pou pi vit chaje JavaScript

Cloudflare, Mozilla ak Facebook devlope BinaryAST pou pi vit chaje JavaScript

Lè w ap trete JavaScript, yo pase yon kantite tan enpòtan nan faz chaje ak analiz kòd la. Lè ou konsidere ke volim nan JavaScript telechaje sou anpil sit popilè se fèmen nan 10 MB (pa egzanp, pou LinkedIn - 7.2 MB, Facebook - 7.1 MB, Gmail - 3.9 MB), pwosesis inisyal la nan JavaScript entwodui yon reta enpòtan. Etap analiz la sou bò navigatè a tou ralanti akòz enkapasite a konplètman bati AST la sou vole a pandan y ap chaje kòd la (navigatè a oblije rete tann pou blòk kòd ranpli chaj, tankou nan fen fonksyon, pou jwenn enfòmasyon ki manke pou analize eleman aktyèl yo).

Yo ap eseye pasyèlman rezoud pwoblèm nan pa distribye kòd la nan yon fòm minimize ak konprese, osi byen ke pa kachèt bytecode ki te pwodwi pa navigatè a. Sou sit modèn yo, kòd la mete ajou byen souvan, kidonk kachèt sèlman pasyèlman rezoud pwoblèm nan. WebAssembly ta ka yon solisyon, men li mande pou tape klè nan kòd la epi li pa byen adapte pou akselere pwosesis la nan kòd JavaScript ki egziste deja.

Yon lòt opsyon se delivre bytecode konpile ki pare olye pou yo script JavaScript, men devlopè motè navigatè yo kont li paske bytecode twazyèm pati difisil pou verifye, pwosesis dirèk li ka mennen nan stratifikasyon entènèt, risk sekirite adisyonèl leve, ak devlopman nan. se yon fòma bytecode inivèsèl obligatwa.

BinaryAST pèmèt ou anfòm nan devlopman kòd aktyèl ou ak modèl livrezon san yo pa kreye nouvo bytecode oswa chanje lang JavaScript. Gwosè done yo nan fòma BinaryAST konparab ak konprese kòd JavaScript minified, ak vitès pwosesis la lè yo elimine faz analiz tèks sous la ogmante notables. Anplis de sa, fòma a pèmèt konpilasyon bytecode kòm BinaryAST chaje, san yo pa tann pou tout done yo fini. Anplis de sa, analiz sou bò sèvè a pèmèt ou eskli fonksyon ki pa itilize ak kòd ki pa nesesè nan reprezantasyon BinaryAST ki retounen, ki, lè analiz sou bò navigatè a, gaspiye tan tou de analiz ak transmèt trafik ki pa nesesè.

Yon karakteristik nan BinaryAST se tou kapasite nan retabli JavaScript lizib ki pa egzakteman menm jan ak vèsyon orijinal la, men se semantik ekivalan e li gen ladann menm non yo nan varyab ak fonksyon (BinaryAST sove non, men li pa sove enfòmasyon sou pozisyon nan la. kòd, fòma ak kòmantè). Lòt bò pyès monnen an se aparisyon nouvo vektè atak, men selon devlopè yo, yo pi piti ak plis kontwole pase lè w ap itilize altènativ yo, tankou distribisyon bytecode.

Tès kòd facebook.com te montre ke analiz JavaScript konsome 10-15% nan resous CPU ak analiz pran plis tan pase génération bytecode ak premye jenerasyon kòd pou JIT. Nan motè SpiderMonkey la, tan an konplètman bati yon AST pran 500-800 ms, ak itilizasyon BinaryAST te redwi figi sa a pa 70-90%.
An jeneral, pou pifò fedatifis entènèt, lè w ap itilize BinaryAST, tan JavaScript analiz redwi pa 3-10% nan mòd san optimize ak pa 90-97% lè mòd inyore fonksyon ki pa itilize yo aktive.
Lè w ap kouri yon seri tès JavaScript 1.2 MB, lè l sèvi avèk BinaryAST pèmèt tan demaraj la akselere soti nan 338 a 314 ms sou yon sistèm Desktop (Intel i7) ak soti nan 2019 a 1455 ms sou yon aparèy mobil (HTC One M8).

Sous: opennet.ru

Add nouvo kòmantè