Cloudflare, Mozilla ja Facebook arendavad BinaryAST-i JavaScripti laadimise kiirendamiseks

Cloudflare, Mozilla, Facebook ja Bloomberg'i insenerid ettepaneku uus formaat BinaryAST JavaScript koodi kohaletoimetamise ja töötlemise kiirendamiseks veebisaitide avamisel. BinaryAST toob sĂŒntaksiparanduse etapi serverisse ja tarnib juba koostatud abstraktse sĂŒntaksipuu (AST). BinaryASTi kasutamisel saab brauser kohe edasi liikuda kompileerimise etappi, mööda minnes JavaScripti lĂ€htekoodi parsimisest.

Testimiseks valmistatud musterteostus, mis on saadaval MIT litsentsi alusel. Parsimiseks kasutatakse Node.js komponente ning AST optimeerimise ja koostamise kood on kirjutatud Rust keeles. Brauseritel on tugi
BinaryAST juba saadaval ööde kogumid Firefoxis. BinaryASTi kodeerijat saab rakendada nii lÔppsaidi tööriistade tasemel kui ka vÀliste skriptide pakkimiseks, mis toimub vahepÀringus vÔi sisu edastamise vÔrgus. Praeguseks on alanud BinaryASTi standardimise protsess töögrupis ECMA TC39, pÀrast mida saab formaat eksisteerida koos olemasolevate sisu tihendamise meetoditega nagu gzip ja brotli.

Cloudflare, Mozilla ja Facebook arendavad BinaryAST-i JavaScripti laadimise kiirendamiseks

Cloudflare, Mozilla ja Facebook arendavad BinaryAST-i JavaScripti laadimise kiirendamiseks

JavaScripti töötlemisel kulub mĂ€rkimisvÀÀrne aeg koodi laadimise ja sĂŒntaksiparanduse faasile. Arvestades, et paljude populaarsete veebisaitide JavaScripti laadimise maht ulatub 10 MB (nĂ€iteks LinkedIn — 7,2MB, Facebook — 7,1MB, Gmail — 3,9MB), toob JavaScripti algne töötlemine kaasa olulise viivituse. Brauseri parsimise etapp aeglustub ka, kuna AST ehitamist ei saa tĂ”eliselt teha jooksvalt, koodi laadimise kĂ€igus (brauser peab ootama koodiblokkide laadimise lĂ”petamist, nĂ€iteks funktsioonide lĂ”ppu, et saada puuduolevat teavet, mis on vajalik praeguste elementide parsimiseks).

Osaliselt ĂŒritatakse probleemi lahendada koodi levitamise kaudu minimeeritud ja tihendatud kujul, samuti brauseri genereeritud bytecode'i vahemĂ€luga. Kaasaegsetel veebisaitidel uuendatakse koodi piisavalt sageli, mistĂ”ttu vahemĂ€lu lahendab probleemi vaid osaliselt. Lahendus vĂ”iks olla WebAssembly, kuid see nĂ”uab koodis selge tĂŒĂŒbi kasutamist ja sobib halvasti juba olemasoleva JavaScripti koodi töötlemise kiirendamiseks.

Teine vÔimalus on saata valmis kompileeritud baitkood JavaScripti skriptide asemel, kuid brauserimootorite arendajad on selle vastu, kuna kolmanda osapoole baitkoodi on raske valideerida, selle otse töötlemine vÔib pÔhjustada veebipinda eraldumist, tekivad tÀiendavad turvaohtud ja vajalik on universaalse baitkoodi formaadi arendamine.

BinaryAST vĂ”imaldab integreeruda olemasolevasse koodi arenduse ja edastamise mudelisse, luues uut baitkoodi vĂ”i muutes JavaScripti keelt. BinaryAST formaadis andmete suurus on vĂ”rreldav tihendatud minimeeritud JavaScripti koodiga, samas kui töötlemise kiirus suureneb mĂ€rkimisvÀÀrselt, kuna vĂ€listatakse source textide parsimise faas. Lisaks vĂ”imaldab formaat kompileerida baitkoodi BinaryAST laadimise ajal, ootamata kogu andmemahu saamist. Serveripoolne parsimine vĂ”imaldab vĂ€listada edastatavast BinaryAST esitusest kasutamata funktsioone ja liigset koodi, mille parsimiseks brauseripoolsel tasandil kulub aega nii analĂŒĂŒsimiseks kui ka liigse liikluse edastamiseks.

BinaryASTi eripĂ€ra on ka vĂ”imalus taastada loetav JavaScript, mis ei kattu ĂŒksĂŒheselt algse variandiga, kuid on semantiliselt ekvivalentne ja sisaldab samu muutuja ja funktsiooni nimesid (BinaryAST sĂ€ilitab nimed, kuid ei salvesta koodi positsioonide, vormindamise ja kommentaaride teavet). Teise poole mĂŒndi on uute rĂŒnnakusuundade ilmumine, kuid arendajate arvates on need mĂ€rkimisvÀÀrselt vĂ€iksemad ja paremini juhitavad kui alternatiive rakendades, nĂ€iteks baitkoodi levitamisel.

Facebook.com koodi testid on nÀidanud, et JavaScripti parsimiseks kulub 10-15% CPU ressursse ja parsimiseks kulub rohkem aega kui baitkoodi genereerimiseks ja JIT jaoks koodi algses loomises. SpiderMonkey mootoris vÔtab tÀis AST-i ehitamine aega 500-800 ms, ja BinaryASTi rakendamine vÔimaldas seda nÀitajat vÀhendada 70-90%.
Üldiselt vĂ€heneb enamiku veebiraamistike JavaScripti parsimise aeg BinaryAST kasutamisel 3-10% optimeerimise reĆŸiimis ja 90-97% kasutamata funktsioonide ignoreerimise reĆŸiimis.
Testimise ajal JavaScripti komplekti, mille suurus on 1,2 MB, vÔimaldas BinaryAST kÀivitamise algusaega lauaarvutis (Intel i7) kiirendada 338 ms-lt 314 ms-le ja mobiilseadmes (HTC One M8) 2019 ms-lt 1455 ms-le.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster