Enjenyè ki soti nan Cloudflare, Mozilla, Facebook ak Bloomberg
Pou tès
BinaryAST deja disponib nan
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