Pohrana na strani klijenta neophodna je za web aplikacije. Možda nije otporan na metke kao pohrana na strani poslužitelja, ali bez njega web-aplikacije ne bi mogle implementirati mnoge moderne značajke. Sve vrste značajki ovise o pohrani na strani klijenta, od sesija u igrama do kolica za kupnju na web stranicama e-trgovine.
Pohrana na strani klijenta također omogućuje web aplikacijama implementaciju arhitekture usmjerene na privatnost. Možete ga koristiti kako biste osigurali da osjetljivi podaci nikada ne napuste korisnikov uređaj.
Što je pohrana na strani klijenta?
U web razvoju, pohrana na strani klijenta odnosi se na različite načine na koje web preglednici mogu pohraniti podatke. Aplikacija zatim može koristiti te podatke za pružanje funkcionalnosti korisnicima. Pohrana na strani klijenta kritična je iz nekoliko razloga:
- Podacima pohranjenim na klijentu znatno je brže pristupiti, a vaša im aplikacija može pristupiti bez interneta.
- Pohrana na strani klijenta vašoj aplikaciji olakšava pamćenje preferencija svakog korisnika.
- Trajno pohranjivanje nekih podataka na klijentu olakšava zaštitu privatnosti korisnika.
- Pohranjivanje svih podataka aplikacije na poslužitelj je skupo, posebno u velikim razmjerima.
Postoji nekoliko različitih oblika pohrane na strani klijenta koje možete koristiti u svojim web aplikacijama.
Kolačići
Kolačić preglednika je dio podataka o ključu/vrijednosti pohranjen kao niz na vašem računalu. Preglednici šalju sve kolačiće za određenu stranicu poslužitelju stranice na svaki zahtjev. Kolačići su bili prva (i neko vrijeme jedina) vrsta pohrane na strani klijenta.
Ne postoji službeno ograničenje veličine kolačića, ali pojedinačni preglednici postavljaju različita ograničenja veličine i broja kolačića koje možete postaviti. The RFC 6265 Odjeljak 6.1 navodi sljedeće minimalne mogućnosti kolačića koje bi preglednici (korisnički agenti) trebali pružiti:
Praktične implementacije korisničkih agenata imaju ograničenja u broju i veličini kolačića koje mogu pohraniti. Korisnički agenti za opću upotrebu TREBAJU pružiti svaku od sljedećih minimalnih mogućnosti:
- Najmanje 4096 bajtova po kolačiću (mjereno zbrojem duljine naziva, vrijednosti i atributa kolačića).
- Najmanje 50 kolačića po domeni.
- Ukupno najmanje 3000 kolačića.
Kolačići mogu ostati u pregledniku različito dugo. Neki ističu na kraju sesije stranice, a neki imaju proizvoljne datume isteka koji se mogu protezati i mjesecima u budućnost.
Preglednici stvaraju sesiju stranice kada otvorite novu karticu, a prekidaju je kada zatvorite karticu ili preglednik. Ako ponovno učitate ili osvježite stranicu, preglednik neće prekinuti sesiju stranice.
Slučajevi korištenja za kolačiće
Kolačići su najprikladniji za pohranu malih dijelova podataka koje poslužitelj često treba čitati ili mijenjati. Zašto?
- Kolačići se automatski dodaju svim mrežnim zahtjevima
- Kolačići mogu pohraniti samo male količine podataka niza.
Možete koristiti kolačiće za identifikaciju korisnika (poput ID-a sesije), zabilježiti posjet stranici u svrhu označavanja ili pohraniti najbolji rezultat igre.
LocalStorage
Poput kolačića, localStorage je pohrana ključeva/vrijednosti koja pohranjuje podatke niza. Iako su obje vrste pohrane slične, localStorage i kolačići razlikuju se na nekoliko načina:
- LocalStorage ovisi o JavaScriptu.
- Podaci u localStorage primarno se nalaze u pregledniku. Morate ga namjerno poslati poslužitelju, umjesto da ga preglednik šalje na svaki zahtjev.
- LocalStorage nema datum isteka. Zadržava se na klijentu sve dok ga programer ne izbriše pomoću JavaScripta ili dok korisnik ne očisti svoju pohranu preglednika.
- LocalStorage ima puno veći kapacitet pohrane. The WHATWG spec ne navodi čvrstu granicu, ali prema Wikipedia, minimalna veličina localStorage među glavnim preglednicima je 5 MB:
Preglednici ograničavaju kolačiće na 4 kilobajta. Web pohrana pruža daleko veći kapacitet pohrane:
- Opera 10.50+ dopušta 5 MB
- Safari 8 dopušta 5 MB
- Firefox 34 dopušta 10 MB
- Google Chrome dopušta 10 MB po izvoru
- Internet Explorer dopušta 10 MB po prostoru za pohranu
Slučajevi korištenja za LocalStorage
LocalStorage je savršen za pohranjivanje velike količine podataka koje poslužitelj rijetko treba referencirati. To mogu biti korisničke postavke aplikacije, detalji konfiguracije teme ili podaci u nedavno ispunjenom obrascu. To je zato što localStorage ima mnogo veće ograničenje pohrane od kolačića, ali morate uložiti dodatne napore da pošaljete svoje podatke na poslužitelj.
Ako podatke pohranjujete kao JSON, možete pohraniti prilično složene podatke koristeći localStorage, iako može pohraniti samo nizove.
LocalStorage je ranjiv na XSS napadi, stoga u njemu ne biste trebali pohranjivati osjetljive klijentske podatke.
SessionStorage
SessionStorage je pohrana ključeva/vrijednosti koja radi gotovo isto što i localStorage, osim jedne stvari. Pohranjeni podaci traju samo tijekom trajanja sesije stranice.
Slučajevi korištenja za SessionStorage
SessionStorage možete koristiti za pohranjivanje iste vrste podataka kao localStorage, ali samo kada podaci ne moraju postojati nakon sesije stranice.
IndexedDB
IndexedDB moćan je API preglednika za pohranjivanje velikih količina strukturiranih podataka. To je transakcijska, objektno orijentirana baza podataka koja pohranjuje podatke u parovima ključ/vrijednost.
Ako imate posla s manjim količinama podataka, localStorage/sessionStorage je bolji i lakši izbor. Nažalost, ograničeni su svojim kapacitetom pohrane i činjenicom da mogu pohranjivati samo niz podataka. IndexedDB ne samo da omogućuje pohranjivanje različitih vrsta podataka uključujući datoteke/binarne podatke, već također može pohraniti mnogo više podataka. IndexedDB također konstruira indekse svog sadržaja kako bi omogućio brzo pretraživanje baze podataka.
Slučajevi korištenja za IndexedDB
IndexedDB je u biti NoSQL baza podataka u pregledniku i može pohraniti vrlo velike količine podataka. Svaki slučaj upotrebe koji zahtijeva pohranu preko 10 MB podataka prikladan je za IndexedDB.
Za razliku od drugih oblika pohrane preglednika, IndexedDB nije ograničen na pohranjivanje nizova. IndexedDB može pohraniti podatke svih standardnih JavaScript vrsta. Ako izradite web-aplikaciju koja prvenstveno radi izvan mreže, možete koristiti IndexedDB za pohranjivanje svih podataka aplikacije.
Pohrana na strani klijenta je fleksibilna i moćna
Izraz pohrana na strani klijenta odnosi se na pohranjivanje podataka aplikacije u pregledniku. Pohrana na strani klijenta ključna je za funkcioniranje većine modernih web aplikacija. Postoje različite vrste pohrane na strani klijenta: kolačići, lokalna/sessionStorage i IndexedDB.
Sve vrste pohrane preglednika imaju različita ograničenja kapaciteta i vrste podataka koje mogu pohraniti. Kolačići su najograničeniji tip, local/sessionStorage je najprikladniji, a IndexedDB je najmoćniji.