Cloudflare, Mozilla dhe Facebook po zhvillojnë BinaryAST për të përshpejtuar ngarkimin e JavaScript.

Inxhinierët nga kompanitë Cloudflare, Mozilla, Facebook dhe Bloomberg Të testuarit format i ri BinaryAST për të përshpejtuar dorëzimin dhe përpunimin e kodit JavaScript kur hapen faqet në shfletues. BinaryAST e çon fazën e analizës sintaksore në anën e serverit dhe ofron një pemë sintaksore abstrakte të formuar (AST). Me marrjen e BinaryAST, shfletuesi mund të kalojë menjëherë në fazën e kompilimit, duke shmangur analizimin e kodit burimor JavaScript.

Për testim është përgatitur implementimi referues, i ofruar nën licencën MIT. Për analizim përdoren komponentët e Node.js, ndërsa kodi për optimizimin dhe formimin e AST është shkruar në gjuhën Rust. Në anën e shfletuesve, mbështetja
BinaryAST tashmë është e disponueshme në ndërtimet e natës Firefox. Koduesi në BinaryAST mund të përdoret si në nivelin e instrumenteve të faqes së fundit, ashtu edhe për paketimin e skriptet e faqeve të jashtme në anën e proxy ose rrjetit të shpërndarjes së përmbajtjes. Aktualisht, procesi i standardizimit të BinaryAST është duke filluar nga grupi i punës ECMA TC39, pas përfundimit të së cilës formati do të mund të ekzistojë përkrah metodave ekzistuese të kompresimit të përmbajtjes, të tilla si gzip dhe brotli.

Cloudflare, Mozilla dhe Facebook po zhvillojnë BinaryAST për të përshpejtuar ngarkimin e JavaScript.

Cloudflare, Mozilla dhe Facebook po zhvillojnë BinaryAST për të përshpejtuar ngarkimin e JavaScript.

Një kohë e konsiderueshme gjatë përpunimit të JavaScript merr faza e ngarkimit dhe analizës sintaksore të kodit. Duke marrë parasysh se vëllimi i JavaScript të ngarkuar në shumë faqe të njohura i afrohet 10 MB (p.sh. për LinkedIn - 7.2MB, Facebook - 7.1MB, Gmail - 3.9MB), përpunimi fillestar i JavaScript sjell një vonesë të rëndësishme. Faza e analizimit në anën e shfletuesit ngadalësohet gjithashtu për shkak të pamundësisë për të ndërtuar në mënyrë të plotë AST në fluks, ndërsa ngarkohet kodi (shfletuesi duhet të presë përfundimin e ngarkimit të blloqeve të kodit, për shembull, fundet e funksioneve, për të marrë informacionin e nevojshëm për analizën e elementeve aktuale).

Pjesërisht, problemi përpiqet të zgjidhet përmes shpërndarjes së kodit në formë të minimizuar dhe të kompresuar, si dhe me ndihmën e caches të kodit të gjeneruar nga shfletuesi. Në faqet moderne, kodi përditësohet mjaft shpesh, kështu që caching zgjidh vetëm pjesërisht problemin. Një zgjidhje mund të ishte WebAssembly, por ai kërkon përdorimin e tipizimit të qartë në kod dhe nuk është i përshtatshëm për të përshpejtuar përpunimin e kodit ekzistues në JavaScript.

Një mundësi tjetër është shpërndarja e kodit të përfunduar të kompiluara në vend të skripteve JavaScript, por zhvilluesit e motorëve të shfletuesit janë kundër, pasi kodet e jashtme janë të vështira për t'u verifikuar, përpunimi i drejtpërdrejtë mund të çojë në ndarjen e Web-it, paraqiten kërcënime të tjera të sigurisë dhe kërkohet zhvillimi i një formati universale për kodin e kompiliuar.

BinaryAST lejon që të inkorporohet në modelin aktual të zhvillimit dhe shpërndarjes së kodit pa krijuar një kod të ri të kompiliuar dhe pa ndryshuar gjuhën JavaScript. Madhësia e të dhënave në formatin BinaryAST është e krahasueshme me kodin JavaScript të mbështjellë dhe iu rrit shpejtësia e përpunimit për shkak të përjashtimit të fazës së analizës së teksteve burimore. Për më tepër, formati lejon kompilim në kodin e kompiliuar gjatë ngarkimit të BinaryAST, pa pritur përfundimin e marrjes së të gjitha të dhënave. Gjithashtu, analizimi në anën e serverit lejon përjashtimin nga prezantimi i shpërndarë të BinaryAST funksioneve të padobishme dhe kodit të tepërt, për të cilin analizi në anën e shfletuesit kërkon kohë si për analizimin ashtu edhe për transferimin e trafikut të panevojshëm.

Një veçori e BinaryAST është edhe mundësia për të rikuperuar JavaScript-in e lexueshëm që nuk është identik me versionin e tij origjinal, por semantikisht ekvivalent dhe përfshin të njëjtat emra variablash dhe funksionesh (BinaryAST ruan emrat, por nuk ruan informacionin mbi pozitat në kod, formatimin dhe komentet). Ana e keqe është shfaqja e vektorëve të rinj për sulme, por sipas zhvilluesve ato janë shumë më të pakta dhe më të kontrollueshme se sa me përdorimin e alternativave, si shpërndarja e kodit të kompiliuar.

Testet e kodit në facebook.com treguan se mbi 10-15% të burimeve CPU shpenzohen për analizën e JavaScript dhe për analizimin nevojitet më shumë kohë se sa për gjenerimin e kodit të kompiliuar dhe formimin inicial të kodit për JIT. Në motorin SpiderMonkey, koha për ndërtimin e plotë të AST-p është 500-800 ms dhe përdorimi i BinaryAST ka lejuar të ulë këtë shifër me 70-90%.
Në përgjithësi, për shumicën e framework-eve web, me përdorimin e BinaryAST, koha e analizës JavaScript ulet me 3-10% në mënyrë pa optimizim dhe me 90-97% kur aktivizohet moda përjashtimi i funksioneve të padobishme.
Gjatë ekzekutimit të një grupi testimi JavaScript prej 1.2 MB, aplikimi i BinaryAST lejoj të shpejtohet koha e nisjes nga 338 në 314 ms në një sistem desktop (Intel i7) dhe nga 2019 në 1455 ms në një pajisje mobile (HTC One M8).

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster