Istražite JavaScript binarnu AST predmemoriju modula: kako pruža postojane rezultate kompajliranja, drastično smanjuje vrijeme učitavanja i poboljšava korisničko iskustvo globalno.
Otključavanje vrhunskih performansi: JavaScript binarna AST predmemorija modula za postojane rezultate kompajliranja
U neprekidnoj potrazi za bržim web iskustvima, razvijatelji neprestano traže inovacije koje smanjuju vrijeme učitavanja za milisekunde i poboljšavaju interakcije korisnika. Jedno područje značajne optimizacije, često skriveno ispod površine našeg JavaScript koda visoke razine, leži u složenom procesu kako preglednici i izvršna okruženja interpretiraju i izvršavaju naše aplikacije. Ovdje se koncept JavaScript binarne AST predmemorije modula, koji nudi postojane rezultate kompajliranja, pojavljuje kao prekretnica.
Za globalnu publiku koja se suočava s različitim mrežnim uvjetima i mogućnostima uređaja, optimizacija svakog aspekta isporuke aplikacije je od presudne važnosti. Zamislite korisnika u užurbanom gradskom središtu s optičkim internetom i najnovijim pametnim telefonom, u usporedbi s drugim korisnikom u udaljenom selu koji pristupa internetu putem satelitske veze na starijem uređaju. Obojica zaslužuju besprijekorno, brzo iskustvo. Ovaj članak duboko istražuje kako binarna AST predmemorija modula funkcionira, njezine duboke prednosti, izazove koje postavlja i njezin transformativni potencijal za budućnost web razvoja.
Tiho usko grlo performansi: Parsiranje i kompajliranje JavaScripta
Prije nego što seciramo rješenje, razumijmo problem. Kada se web stranica učitava, preglednik ne preuzima samo vaš HTML, CSS i JavaScript. Zatim mora parsirati, kompajlirati i izvršiti taj kod. Za JavaScript, to uključuje nekoliko ključnih koraka:
- Leksička analiza (tokenizacija): Razlaganje sirovog koda u niz tokena (ključne riječi, identifikatori, operatori itd.).
- Sintaktička analiza (parsiranje): Preuzimanje tih tokena i izgradnja hijerarhijskog prikaza strukture koda, poznatog kao Apstraktno sintaksno stablo (AST).
- Kompajliranje: Pretvaranje AST-a u bajtkod, koji zatim može izvršiti interpreter JavaScript motora ili ga dodatno optimizirati njegov Just-In-Time (JIT) kompajler.
Za male skripte, ovaj proces je zanemariv. Međutim, moderne web aplikacije, posebno velike Single-Page aplikacije (SPA) i Progresivne web aplikacije (PWA), mogu sadržavati megabajte JavaScripta. Vrijeme provedeno na parsiranju i kompajliranju ove značajne količine koda, posebno na manje moćnim uređajima ili preko sporih mreža, može postati značajno usko grlo, što dovodi do primjetnih kašnjenja prije nego što aplikacija postane interaktivna. Taj "porez na parsiranje i kompajliranje" izravno utječe na korisničko iskustvo, što dovodi do viših stopa napuštanja stranice i frustracije korisnika na globalnoj razini.
Razumijevanje jezgre: AST, binarni AST i kompajliranje
Uloga Apstraktnog sintaksnog stabla (AST)
U središtu načina na koji JavaScript motori razumiju vaš kod nalazi se Apstraktno sintaksno stablo (AST). AST je stablo koje predstavlja apstraktnu sintaktičku strukturu izvornog koda napisanog u programskom jeziku. Svaki čvor u stablu označava konstrukt koji se pojavljuje u izvornom kodu. Na primjer, deklaracija funkcije, dodjela varijable ili petlja bili bi predstavljeni specifičnim čvorovima i njihovom djecom.
AST je ključan jer omogućuje motoru da:
- Provjeri sintaksu vašeg koda.
- Izvrši statičku analizu (npr. linting, provjera tipova).
- Generira međukod (poput bajtkoda) za izvršavanje.
- Optimizira kod prije izvršavanja.
Generiranje AST-a iz sirovog tekstualnog JavaScripta je računski intenzivan proces. Zahtijeva čitanje svakog znaka, donošenje odluka o njegovom značenju i izgradnju složene strukture podataka u memoriji. To je zadatak koji se mora obaviti za svaku JavaScript datoteku, svaki put kada se učita, osim ako ne postoji mehanizam za zaobilaženje.
Od teksta do binarnog formata: Obećanje binarnog AST-a
Iako je AST moćan međuprikaz, obično je to memorijska struktura izvedena iz teksta. Ovdje na scenu stupa Binarni AST. Umjesto da svaki put iznova rekonstruira AST, Binarni AST predstavlja iste strukturne informacije u kompaktnom, optimiziranom binarnom formatu. Zamislite ga kao serijaliziranu verziju AST-a koja se može učinkovito pohraniti i dohvatiti.
Prednosti binarnog prikaza su višestruke:
- Manji otisak: Binarni formati mogu biti znatno kompaktniji od svojih tekstualnih pandana. To znači manje podataka za pohranu i potencijalno brži prijenos ako se predmemoriraju preko mreže.
- Brže parsiranje/deserijalizacija: Rekonstrukcija AST-a iz unaprijed parsiranog, binarnog formata je redovima veličine brža od parsiranja sirovog JavaScript teksta. Motor ne mora obavljati leksičku ili sintaktičku analizu; on samo deserijalizira stablo.
- Smanjena upotreba CPU-a: Potrebno je manje računanja da bi se došlo do izvršnog stanja, oslobađajući CPU cikluse za druge zadatke i poboljšavajući ukupnu odzivnost.
Koncept nije potpuno nov; jezici poput Jave kompajliraju se u bajtkod, pa čak i WebAssembly radi na binarnom formatu. Za JavaScript, radi se o donošenju sličnih prednosti kompajliranja u proces učitavanja modula na klijentskoj strani.
Definiranje "kompajliranja" u ovom kontekstu
Kada govorimo o "rezultatima kompajliranja" u kontekstu binarnog AST-a, prvenstveno mislimo na izlaz faze parsiranja — sam AST — i potencijalno neke rane faze optimizacije koje se događaju ubrzo nakon toga. To nije potpuno Just-In-Time (JIT) kompajliranje u strojni kod, koje se događa kasnije tijekom izvršavanja za često korištene dijelove koda. Umjesto toga, to je početno teško opterećenje transformacije JavaScripta čitljivog ljudima u strojno optimiziran međuprikaz. Postojanim predmemoriranjem ovog međuprikaza, naknadna učitavanja mogu preskočiti najskuplje početne korake.
Snaga postojanosti: Kako funkcionira predmemoriranje modula
Prava snaga binarnog AST-a dolazi do izražaja kada je integriran s predmemorijom modula koja nudi postojanost. Bez postojanosti, prednosti su ograničene na jednu sesiju. S postojanošću, optimizirani rezultati kompajliranja mogu preživjeti ponovno pokretanje preglednika, ponovno pokretanje uređaja, pa čak i prekide mrežne veze, pružajući prednosti tijekom više posjeta korisnika.
Objašnjenje mehanizma predmemoriranja
Opći tijek rada za postojanu binarnu AST predmemoriju modula izgledao bi otprilike ovako:
- Prvo učitavanje:
- Preglednik preuzima izvorni JavaScript kod za modul (npr.
moduleA.js). - JavaScript motor obavlja potpunu leksičku i sintaktičku analizu kako bi izgradio memorijski AST.
- Ovaj memorijski AST se zatim serijalizira u kompaktni binarni AST format.
- Binarni AST se pohranjuje u postojanu predmemoriju (npr. na disk, slično kako rade HTTP predmemorije za statičke resurse).
- Kod modula nastavlja s izvršavanjem.
- Preglednik preuzima izvorni JavaScript kod za modul (npr.
- Naknadna učitavanja:
- Kada se isti modul (
moduleA.js) ponovno zatraži, preglednik prvo provjerava svoju postojanu binarnu AST predmemoriju modula. - Ako se u predmemoriji pronađe valjani binarni AST za
moduleA.js, on se dohvaća. - JavaScript motor deserijalizira binarni AST izravno u svoj memorijski AST prikaz, potpuno preskačući skupe korake leksičke i sintaktičke analize.
- Kod modula nastavlja s izvršavanjem znatno brže.
- Kada se isti modul (
Ovaj mehanizam u suštini pretvara CPU-najintenzivniji dio učitavanja JavaScripta iz ponavljajućeg troška u jednokratnu operaciju, slično načinu na koji rade kompajlirani jezici.
Dugovječnost i životni vijek: Što "postojano" zaista znači
"Postojano" podrazumijeva da se predmemorirani rezultati kompajliranja pohranjuju i nakon trenutne sesije. To obično znači spremanje binarnih podataka na disk. Moderni preglednici već koriste različite oblike postojane pohrane za podatke poput IndexedDB, Local Storage i HTTP predmemorije. Binarna AST predmemorija modula vjerojatno bi iskoristila sličan temeljni mehanizam pohrane, omogućujući da predmemorirani moduli budu dostupni čak i nakon što korisnik zatvori i ponovno otvori svoj preglednik, ili čak nakon ponovnog pokretanja uređaja.
Dugovječnost ovih predmemoriranih modula je ključna. Za aplikacije koje se često koriste, dostupnost ovih resursa odmah pri sljedećim posjetima nudi znatno superiornije korisničko iskustvo. To je posebno važno za korisnike koji se često vraćaju istoj web aplikaciji, kao što su bankarski portal, društvena mreža ili poslovni paket za produktivnost.
Strategije invalidacije predmemorije
Jedan od najsloženijih aspekata bilo kojeg sustava predmemoriranja je invalidacija. Kada predmemorirana stavka postaje zastarjela ili netočna? Za JavaScript binarnu AST predmemoriju modula, primarna briga je osigurati da predmemorirani binarni AST točno odražava trenutni izvorni JavaScript kod. Ako se izvorni kod promijeni, predmemorirana binarna verzija mora biti ažurirana ili odbačena.
Uobičajene strategije invalidacije mogu uključivati:
- Heširanje sadržaja (npr. Etag ili Content-MD5): Najrobusnija metoda. Izračunava se heš sadržaja JavaScript datoteke. Ako se izvor promijeni, mijenja se i heš, što ukazuje da predmemorirani binarni AST više nije valjan. To se često integrira s HTTP zaglavljima za predmemoriranje.
- URL-ovi s verzijama: Uobičajena praksa gdje nazivi datoteka modula uključuju heš ili broj verzije (npr.
app.1a2b3c.js). Kada se sadržaj datoteke promijeni, mijenja se i URL, čime se učinkovito stvara novi resurs koji zaobilazi sve stare predmemorije. - HTTP zaglavlja za predmemoriranje: Standardna HTTP zaglavlja poput
Cache-ControliLast-Modifiedmogu pregledniku dati naznake o tome kada treba ponovno provjeriti valjanost ili ponovno dohvatiti izvorni kod. Binarna AST predmemorija bi poštovala ova zaglavlja. - Heuristike specifične za izvršno okruženje: JavaScript motori mogu koristiti interne heuristike, kao što je promatranje čestih grešaka u izvršavanju ili neslaganja, kako bi invalidirali predmemorirani modul i vratili se na parsiranje izvora.
Učinkovita invalidacija je ključna kako bi se spriječilo da korisnici dožive zastarjela ili neispravna stanja aplikacije. Dobro osmišljen sustav uravnotežuje prednosti predmemoriranja s potrebom za trenutnim ažuriranjima kada se izvorni kod promijeni.
Otključavanje performansi: Ključne prednosti za globalne aplikacije
Uvođenje postojane JavaScript binarne AST predmemorije modula donosi niz prednosti, posebno kada se uzme u obzir raznolik globalni krajolik pristupa internetu i mogućnosti uređaja.
Drastično smanjeno vrijeme učitavanja
Ovo je možda najneposrednija i najutjecajnija prednost. Preskakanjem skupih koraka parsiranja i početnog kompajliranja, aplikacije mogu postati interaktivne mnogo brže pri sljedećim posjetima. Za korisnike, to znači manje čekanja i fluidnije iskustvo od trenutka kada dođu na vašu stranicu. Razmislite o velikim platformama za e-trgovinu gdje svaka sekunda vremena učitavanja može značiti izgubljeni prihod, ili o alatima za produktivnost gdje korisnici očekuju trenutan pristup svojim radnim procesima.
Poboljšano korisničko iskustvo (UX)
Smanjeno vrijeme učitavanja izravno doprinosi superiornijem korisničkom iskustvu. Korisnici percipiraju brže aplikacije kao pouzdanije i profesionalnije. To je posebno važno na tržištima u razvoju gdje brzine interneta mogu biti nedosljedne, a korisnici mogu imati ograničene podatkovne planove. Brže učitavajuća aplikacija je pristupačnija i zanimljivija, potičući veće zadržavanje i zadovoljstvo korisnika u svim demografskim skupinama.
Optimizacija za uređaje s ograničenim resursima
Nemaju svi korisnici najnovije flagship pametne telefone ili moćna stolna računala. Značajan dio globalne internetske populacije pristupa webu putem starijih, manje moćnih uređaja sa sporijim procesorima i ograničenim RAM-om. Parsiranje megabajta JavaScripta može biti veliko opterećenje za te uređaje, što dovodi do sporih performansi, pražnjenja baterije, pa čak i rušenja. Prebacivanjem velikog dijela ovog računskog posla na jednokratno kompajliranje i postojanu pohranu, binarno AST predmemoriranje demokratizira pristup složenim web aplikacijama, čineći ih performansnima čak i na jeftinijem hardveru.
Povećanje produktivnosti razvijatelja
Iako je prvenstveno korist za korisnike, brže vrijeme učitavanja može implicitno povećati i produktivnost razvijatelja. Tijekom razvoja, česta osvježavanja i ponovna učitavanja postaju manje zamorna kada se aplikacija pokrene trenutno. Osim toga, preusmjeravanjem fokusa s ublažavanja troškova parsiranja, razvijatelji se mogu više koncentrirati na razvoj značajki, optimizaciju performansi u stvarnom vremenu i dizajn usmjeren na korisnika.
Utjecaj na Progresivne web aplikacije (PWA)
PWA su dizajnirane da pružaju iskustvo slično aplikacijama, često koristeći service workere za offline mogućnosti i agresivno predmemoriranje. Binarna AST predmemorija modula savršeno se uklapa u PWA filozofiju. Dodatno poboljšava aspekt "trenutnog učitavanja" PWA, čak i kada ste izvan mreže (ako je binarni AST predmemoriran lokalno). To znači da se PWA ne samo da može trenutno učitati iz mrežne predmemorije, već i postati interaktivna gotovo odmah, nudeći zaista besprijekorno iskustvo bez obzira na mrežne uvjete. Ovo je ključna razlika za aplikacije koje ciljaju korisnike u regijama s nepouzdanom vezom.
Navigacija krajolikom: Izazovi i razmatranja
Iako su prednosti uvjerljive, implementacija i široko usvajanje postojane JavaScript binarne AST predmemorije modula predstavlja nekoliko netrivijalnih izazova.
Složenost invalidacije predmemorije
Kao što je spomenuto, invalidacija predmemorije je složena. Iako je heširanje sadržaja robusno, osiguravanje njegove dosljedne primjene u svim razvojnim, implementacijskim i pregledničkim okruženjima zahtijeva pažljive alate i pridržavanje najboljih praksi. Pogreške mogu dovesti do toga da korisnici pokreću zastarjeli ili neispravan kod, što može biti pogubno za ključne aplikacije.
Sigurnosne implikacije
Pohranjivanje unaprijed kompajliranih, postojanih prikaza koda na korisničkom uređaju uvodi potencijalne sigurnosne probleme. Iako je to manji izravni vektor napada nego, recimo, dopuštanje proizvoljnog izvršavanja koda, osiguravanje integriteta predmemoriranog binarnog AST-a je od presudne važnosti. Zlonamjerni akteri ne smiju moći neovlašteno mijenjati predmemorirani binarni kod kako bi ubrizgali vlastiti kod ili promijenili logiku aplikacije. Sigurnosni mehanizmi na razini preglednika bili bi ključni za zaštitu ove predmemorije od neovlaštenog pristupa ili izmjene.
Standardizacija i usvajanje u različitim okruženjima
Da bi ova tehnologija imala istinski globalni utjecaj, potrebno je široko usvajanje u svim glavnim pregledničkim motorima (Chromium, Gecko, WebKit) i potencijalno drugim JavaScript izvršnim okruženjima (npr. Node.js za prednosti na strani poslužitelja). Napori na standardizaciji obično su spori i uključuju opsežne rasprave i postizanje konsenzusa među različitim proizvođačima. Različite implementacije ili nedostatak podrške u određenim okruženjima ograničili bi njezinu univerzalnost.
Upravljanje otiskom memorije i diska
Iako su binarni AST-ovi kompaktniji od sirovog teksta, postojano predmemoriranje velikog broja modula i dalje troši prostor na disku i potencijalno memoriju. Preglednici i izvršna okruženja trebali bi sofisticirane algoritme za upravljanje ovom predmemorijom:
- Pravila izbacivanja: Kada treba ukloniti predmemorirane stavke kako bi se oslobodio prostor? (Najmanje nedavno korišteno, najmanje često korišteno, na temelju veličine).
- Upravljanje kvotama: Koliko prostora na disku se može dodijeliti ovoj predmemoriji?
- Prioritizacija: Koji su moduli najkritičniji za postojano predmemoriranje?
Ove strategije upravljanja ključne su kako bi se osiguralo da prednosti performansi ne dolaze po cijenu prekomjerne potrošnje resursa, što bi moglo negativno utjecati na ukupne performanse sustava ili korisničko iskustvo na uređajima s ograničenom pohranom.
Podrška alata i ekosustava
Da bi razvijatelji mogli ovo iskoristiti, cijeli ekosustav se treba prilagoditi. Alati za izgradnju (Webpack, Rollup, Vite), okviri za testiranje i alati za otklanjanje pogrešaka trebali bi razumjeti i graciozno komunicirati s binarnim AST-ovima. Otklanjanje pogrešaka u binarnom prikazu je inherentno izazovnije od otklanjanja pogrešaka u izvornom kodu. Izvorne mape (source maps) postale bi još kritičnije za povezivanje izvršnog koda s izvornim kodom.
Praktična implementacija i budući izgledi
Trenutni status i podrška preglednika/izvršnih okruženja
Koncept binarnog AST-a za JavaScript istraživali su i eksperimentirali s njim različiti proizvođači preglednika. Na primjer, Firefox već neko vrijeme ima interno predmemoriranje bajtkoda, a Chromeov V8 motor također je koristio slične koncepte za predmemorirani kod. Međutim, istinski standardizirana, postojana i na razini modula binarna AST predmemorija izložena kao značajka web platforme još uvijek je područje koje se razvija.
Prijedlozi i rasprave o ovoj temi često se odvijaju unutar W3C-a i TC39 (odbora koji standardizira JavaScript). Iako su specifični, široko prihvaćeni API-ji za izravnu interakciju programera s binarnom AST predmemorijom možda još uvijek u ranijim fazama standardizacije, preglednički motori kontinuirano poboljšavaju svoje interne mehanizme predmemoriranja kako bi postigli slične prednosti bez eksplicitne intervencije programera.
Kako se programeri mogu pripremiti (ili iskoristiti postojeća rješenja)
Čak i bez izravnih API-ja za binarno AST predmemoriranje, programeri i dalje mogu optimizirati svoje aplikacije kako bi iskoristili trenutna i buduća poboljšanja predmemoriranja u preglednicima:
- Agresivno HTTP predmemoriranje: Pravilno konfigurirajte
Cache-Controlzaglavlja za svoje JavaScript pakete kako biste omogućili dugoročno predmemoriranje. - URL-ovi resursa s verzijama: Koristite heševe sadržaja u nazivima datoteka (npr.
main.abc123.js) kako biste osigurali učinkovitu invalidaciju predmemorije kada se datoteke mijenjaju i dugoročno predmemoriranje kada se ne mijenjaju. - Razdvajanje koda (Code Splitting): Razbijte velike aplikacije na manje, asinkrono učitane module. To smanjuje početno opterećenje parsiranja i omogućuje preglednicima učinkovitije predmemoriranje pojedinačnih modula.
- Prethodno učitavanje/dohvaćanje (Preloading/Prefetching): Koristite
<link rel="preload">i<link rel="prefetch">za proaktivno dohvaćanje i potencijalno parsiranje modula koji će uskoro biti potrebni. - Service Workers: Implementirajte service workere za presretanje mrežnih zahtjeva i posluživanje predmemoriranog sadržaja, uključujući JavaScript module, pružajući robusne offline mogućnosti i trenutno učitavanje.
- Minimizirajte veličinu paketa: Koristite tree-shaking, eliminaciju mrtvog koda i moderne tehnike kompresije (Brotli, Gzip) kako biste smanjili količinu JavaScripta koju treba preuzeti i obraditi.
Ove prakse pripremaju aplikacije da u potpunosti iskoriste postojeće i buduće optimizacije preglednika, uključujući sve interne mehanizme binarnog AST predmemoriranja koje motori implementiraju.
Put pred nama: Spekulacije i evolucija
Trajektorija web performansi sugerira da su dublji, inteligentniji mehanizmi predmemoriranja na razini motora neizbježni. Kako web aplikacije rastu u složenosti i opsegu, početni trošak parsiranja i kompajliranja postat će samo izraženiji. Buduće iteracije mogle bi donijeti:
- Standardizirani format binarnog AST-a: Univerzalni format koji različiti motori mogu proizvoditi i konzumirati.
- API-ji za razvijatelje: Eksplicitni API-ji koji omogućuju razvijateljima da predlože module za binarno AST predmemoriranje ili prate status predmemorije.
- Integracija s WebAssemblyjem: Sinergije s WebAssemblyjem (koji je već binarni) mogle bi dovesti do hibridnih pristupa za određene vrste modula.
- Poboljšani alati: Bolji alati za razvijatelje u preglednicima za inspekciju i otklanjanje pogrešaka u predmemoriranim binarnim modulima.
Krajnji cilj je kretanje prema web platformi gdje opterećenje parsiranja i kompajliranja JavaScripta postaje uglavnom nevidljivo krajnjem korisniku, bez obzira na njihov uređaj ili mrežu. Binarna AST predmemorija modula ključan je dio ove slagalice, obećavajući performansnije i pravednije web iskustvo za sve.
Praktični uvidi za razvijatelje i arhitekte
Za one koji danas grade i održavaju web aplikacije te planiraju za budućnost, evo nekoliko praktičnih uvida:
- Dajte prioritet performansama početnog učitavanja: Uvijek optimizirajte svoj kritični put renderiranja. Alati poput Lighthousea mogu pomoći u identificiranju uskih grla parsiranja/kompajliranja.
- Prihvatite moderne obrasce modula: Iskoristite ES module i dinamičke importe kako biste olakšali bolje razdvajanje koda i granularnije mogućnosti predmemoriranja.
- Ovladajte strategijama predmemoriranja: Postanite vješti s HTTP zaglavljima za predmemoriranje, service workerima i resursima s verzijama. To je temelj za iskorištavanje bilo kakvog naprednog predmemoriranja, uključujući binarni AST.
- Ostanite informirani o razvoju preglednika: Pratite Chrome Dev Summit, Mozilla Hacks i WebKit blog za ažuriranja o optimizacijama na razini motora vezanim uz parsiranje i predmemoriranje JavaScripta.
- Razmotrite kompajliranje na strani poslužitelja: Za okruženja s renderiranjem na strani poslužitelja (SSR), predkompajliranje JavaScripta u međformat također može smanjiti vrijeme pokretanja na poslužitelju, nadopunjujući binarno AST predmemoriranje na strani klijenta.
- Educirajte svoje timove: Osigurajte da vaši razvojni timovi razumiju "porez na parsiranje i kompajliranje" i važnost optimizacija performansi u vrijeme izgradnje i izvršavanja.
Zaključak
JavaScript binarna AST predmemorija modula, sa svojom sposobnošću pohranjivanja postojanih rezultata kompajliranja, predstavlja značajan iskorak u rješavanju jednog od najtrajnijih izazova performansi na webu: troška parsiranja i kompajliranja velikih JavaScript aplikacija. Transformiranjem ponavljajućeg, CPU-intenzivnog zadatka u uglavnom jednokratnu operaciju, obećava drastično smanjenje vremena učitavanja, poboljšanje korisničkog iskustva na globalnoj razini i činjenje sofisticiranih web aplikacija dostupnima i performansnima čak i na uređajima s najograničenijim resursima.
Iako se potpuna standardizacija i široko rasprostranjeni API-ji za razvijatelje još uvijek razvijaju, temeljni principi se već integriraju u moderne pregledničke motore. Razvijatelji koji usvoje najbolje prakse u pakiranju modula, agresivnom predmemoriranju i obrascima progresivnih web aplikacija bit će u najboljoj poziciji da iskoriste ove napretke i isporuče trenutna, fluidna iskustva koja korisnici diljem svijeta sve više očekuju.
Putovanje prema još bržem, inkluzivnijem webu se nastavlja, a binarna AST predmemorija modula nedvojbeno je moćan saveznik u toj neprestanoj potrazi.