Shranjevanje na strani odjemalca je bistveno za spletne aplikacije. Morda ni tako neprebojen kot shranjevanje na strani strežnika, vendar brez njega spletne aplikacije ne bi mogle izvajati številnih sodobnih funkcij. Vse vrste funkcij so odvisne od shranjevanja na strani odjemalca, od sej v igrah do nakupovalnih vozičkov na spletnih mestih za e-trgovino.
Shramba na strani odjemalca tudi omogoča spletnim aplikacijam implementacijo arhitekture, osredotočene na zasebnost. Z njim lahko zagotovite, da občutljivi podatki nikoli ne zapustijo uporabnikove naprave.
Kaj je shranjevanje na strani odjemalca?
V spletnem razvoju se shranjevanje na strani odjemalca nanaša na različne načine, kako lahko spletni brskalniki shranjujejo podatke. Aplikacija lahko nato te podatke uporabi za zagotavljanje funkcionalnosti uporabnikom. Shramba na strani odjemalca je kritična iz nekaj razlogov:
- Dostop do podatkov, shranjenih na odjemalcu, je bistveno hitrejši, vaša aplikacija pa lahko do njih dostopa brez interneta.
- Shramba na strani odjemalca vaši aplikaciji olajša zapomnitev preferenc vsakega uporabnika.
- Trajno shranjevanje nekaterih podatkov na odjemalcu olajša varovanje zasebnosti uporabnikov.
- Shranjevanje vseh aplikacijskih podatkov na strežniku je drago, zlasti v velikih obsegih.
V svojih spletnih aplikacijah lahko uporabite več različnih oblik shranjevanja na strani odjemalca.
Piškotki
Piškotek brskalnika je del podatkov ključ/vrednost, shranjen kot niz v vašem računalniku. Brskalniki ob vsaki zahtevi pošljejo vse piškotke za določeno spletno mesto na strežnik spletnega mesta. Piškotki so bili prva (in nekaj časa edina) vrsta shranjevanja na strani odjemalca.
Uradne omejitve glede velikosti piškotka ni, vendar posamezni brskalniki postavljajo različne omejitve glede velikosti in števila piškotkov, ki jih lahko nastavite. The RFC 6265 Razdelek 6.1 navaja naslednje minimalne zmogljivosti piškotkov, ki jih morajo zagotoviti brskalniki (uporabniški agenti):
Praktične izvedbe uporabniških agentov imajo omejitve glede števila in velikosti piškotkov, ki jih lahko shranijo. Uporabniški agenti za splošno rabo MORAJO zagotoviti vsako od naslednjih minimalnih zmogljivosti:
- Vsaj 4096 bajtov na piškotek (merjeno z vsoto dolžine imena, vrednosti in atributov piškotka).
- Vsaj 50 piškotkov na domeno.
- Skupaj vsaj 3000 piškotkov.
Piškotki lahko ostanejo v brskalniku različno dolgo. Nekateri potečejo ob koncu seje strani, nekateri pa imajo poljubne datume poteka, ki se lahko raztezajo celo mesece v prihodnost.
Brskalniki ustvarijo sejo strani, ko odprete nov zavihek, in jo končajo, ko zaprete zavihek ali brskalnik. Če znova naložite ali osvežite stran, brskalnik ne bo končal seje strani.
Primeri uporabe piškotkov
Piškotki so najprimernejši za shranjevanje majhnih kosov podatkov, ki jih mora strežnik pogosto prebrati ali spremeniti. Zakaj?
- Piškotki se samodejno dodajo vsem omrežnim zahtevam
- Piškotki lahko shranijo le majhne količine nizov podatkov.
Piškotke lahko uporabite za identifikacijo uporabnika (na primer ID seje), beleženje obiska strani za namene dodajanja med zaznamke ali shranjevanje visokega rezultata igre.
LocalStorage
Tako kot piškotek je tudi localStorage shramba ključev/vrednosti, ki shranjuje podatke nizov. Čeprav sta si obe vrsti shranjevanja podobni, se localStorage in piškotki razlikujejo na več načinov:
- LocalStorage je odvisen od JavaScripta.
- Podatki v localStorage se nahajajo predvsem v brskalniku. Namenoma ga morate poslati strežniku, namesto da bi ga brskalnik poslal ob vsaki zahtevi.
- LocalStorage nima datuma poteka. Vztraja v odjemalcu, dokler ga razvijalec ne izbriše z JavaScriptom ali dokler uporabnik ne počisti svojega pomnilnika brskalnika.
- LocalStorage ima veliko večjo zmogljivost shranjevanja. The Spec. WHATWG ne določa trde omejitve, vendar glede na Wikipedia, je najmanjša velikost localStorage med glavnimi brskalniki 5 MB:
Brskalniki omejijo piškotke na 4 kilobajte. Spletna shramba zagotavlja veliko večjo zmogljivost shranjevanja:
- Opera 10.50+ omogoča 5 MB
- Safari 8 omogoča 5 MB
- Firefox 34 omogoča 10 MB
- Google Chrome omogoča 10 MB na izvor
- Internet Explorer omogoča 10 MB prostora za shranjevanje
Primeri uporabe za LocalStorage
LocalStorage je kot nalašč za shranjevanje velike količine podatkov, ki jih strežnik le redko potrebuje. To so lahko uporabniške nastavitve aplikacije, podrobnosti konfiguracije teme ali podatki v nedavno izpolnjenem obrazcu. To je zato, ker ima localStorage veliko večjo omejitev prostora za shranjevanje kot piškotki, vendar se morate dodatno potruditi, da svoje podatke pošljete strežniku.
Če podatke shranjujete kot JSON, lahko shranite razmeroma zapletene podatke z uporabo localStorage, čeprav lahko shranjuje samo nize.
LocalStorage je ranljiv za XSS napadi, zato vanj ne shranjujte občutljivih podatkov o strankah.
SessionStorage
SessionStorage je shramba ključev/vrednosti, ki deluje skoraj enako kot localStorage, razen ene stvari. Shranjeni podatki se ohranijo samo za dolžino seje strani.
Primeri uporabe za SessionStorage
SessionStorage lahko uporabite za shranjevanje enake vrste podatkov kot localStorage, vendar le, če ni treba, da podatki vztrajajo po seji strani.
IndexedDB
IndexedDB je zmogljiv API brskalnika za shranjevanje velikih količin strukturiranih podatkov. Je transakcijska, objektno usmerjena zbirka podatkov, ki shranjuje podatke v parih ključ/vrednost.
Če imate opravka z manjšimi količinami podatkov, je localStorage/sessionStorage boljša in lažja izbira. Na žalost so omejeni s svojo zmogljivostjo shranjevanja in dejstvom, da lahko shranjujejo samo nizovne podatke. IndexedDB ne omogoča samo shranjevanja različnih vrst podatkov, vključno z datotekami/binarnimi podatki, ampak lahko shrani tudi veliko več podatkov. IndexedDB gradi tudi indekse svoje vsebine, da omogoči hitro iskanje po bazi podatkov.
Primeri uporabe za IndexedDB
IndexedDB je v bistvu baza podatkov NoSQL v brskalniku in lahko shrani zelo velike količine podatkov. Vsak primer uporabe, ki zahteva shranjevanje več kot 10 MB podatkov, je primeren za IndexedDB.
Za razliko od drugih oblik shranjevanja brskalnika IndexedDB ni omejen na shranjevanje nizov. IndexedDB lahko shranjuje podatke vseh standardnih vrst JavaScript. Če ustvarite spletno aplikacijo za delo predvsem brez povezave, lahko uporabite IndexedDB za shranjevanje vseh podatkov aplikacije.
Shranjevanje na strani odjemalca je prilagodljivo in zmogljivo
Izraz shranjevanje na strani odjemalca se nanaša na shranjevanje podatkov aplikacije v brskalniku. Shranjevanje na strani odjemalca je bistvenega pomena za delovanje večine sodobnih spletnih aplikacij. Obstajajo različne vrste shranjevanja na strani odjemalca: piškotki, local/sessionStorage in IndexedDB.
Vse vrste pomnilnika brskalnika imajo različne omejitve glede zmogljivosti in vrste podatkov, ki jih lahko shranijo. Piškotki so najbolj omejena vrsta, local/sessionStorage je najbolj priročen, IndexedDB pa je najmočnejši.