Stocarea pe partea clientului este esențială pentru aplicațiile web. S-ar putea să nu fie la fel de rezistentă ca stocarea pe server, dar, fără ea, aplicațiile web nu ar putea implementa multe funcții moderne. Tot felul de caracteristici depind de stocarea la nivelul clientului, de la sesiuni în jocuri la coșuri de cumpărături pe site-urile de comerț electronic.
Stocarea pe partea clientului permite, de asemenea, aplicațiilor web să implementeze o arhitectură centrată pe confidențialitate. Îl puteți folosi pentru a vă asigura că datele sensibile nu părăsesc dispozitivul unui utilizator.
Ce este stocarea pe partea client?
În dezvoltarea web, stocarea pe partea client se referă la diferitele moduri în care browserele web pot stoca date. O aplicație poate folosi apoi aceste date pentru a oferi funcționalitate utilizatorilor. Stocarea pe partea clientului este critică din câteva motive:
- Datele stocate pe client sunt mult mai rapid de accesat, iar aplicația dvs. le poate accesa fără internet.
- Stocarea la nivelul clientului face ca aplicația dvs. să își amintească mai ușor preferințele fiecărui utilizator.
- Stocarea permanentă a unor date pe client facilitează protejarea confidențialității utilizatorului.
- Stocarea tuturor datelor aplicației pe server este costisitoare, mai ales la scară largă.
Există mai multe forme diferite de stocare pe partea clientului pe care le puteți utiliza în aplicațiile dvs. web.
Cookie-uri
Un cookie de browser este o bucată de date cheie/valoare stocată sub formă de șir pe computerul dvs. Browserele trimit toate modulele cookie pentru un anumit site către serverul site-ului la fiecare solicitare. Cookie-urile au fost primul (și pentru o vreme, singurul) tip de stocare pe partea clientului.
Nu există o limită oficială a dimensiunii unui cookie, dar browserele individuale pun limite diferite pentru dimensiunea și numărul de cookie-uri pe care le puteți seta. The RFC 6265 Secțiunea 6.1 prevede următoarele capacități minime de cookie-uri pe care browserele (agenții de utilizator) ar trebui să le ofere:
Implementările practice user agent au limite privind numărul și dimensiunea cookie-urilor pe care le pot stoca. Agenții utilizatori de uz general TREBUIE să ofere fiecare dintre următoarele capabilități minime:
- Cel puțin 4096 de octeți per cookie (măsurat prin suma lungimii numelui, valorii și atributelor cookie-ului).
- Cel puțin 50 de cookie-uri pe domeniu.
- Cel puțin 3000 de cookie-uri în total.
Cookie-urile pot rămâne în browser pentru perioade diferite de timp. Unele expiră la sfârșitul unei sesiuni de pagină, iar altele au date de expirare arbitrare care se pot întinde până la câteva luni în viitor.
Browserele creează o sesiune de pagină când deschideți o filă nouă și o termină când închideți fila sau browserul. Dacă reîncărcați sau reîmprospătați pagina, browserul nu va încheia sesiunea paginii.
Cazuri de utilizare pentru cookie-uri
Cookie-urile sunt cele mai potrivite pentru a stoca bucăți mici de date pe care serverul trebuie să le citească sau să le modifice frecvent. De ce?
- Cookie-urile sunt atașate automat la toate solicitările din rețea
- Cookie-urile pot stoca doar cantități mici de date șir.
Puteți utiliza module cookie pentru a identifica un utilizator (cum ar fi un ID de sesiune), pentru a înregistra o vizită a paginii în scopuri de marcare sau pentru a stoca scorul mare al unui joc.
Stocare locală
La fel ca un cookie, localStorage este un magazin cheie/valoare care stochează date șiruri. Deși ambele tipuri de stocare sunt similare, stocarea locală și cookie-urile diferă în mai multe moduri:
- LocalStorage depinde de JavaScript.
- Datele din localStorage se află în principal în browser. Trebuie să îl trimiteți în mod deliberat către server, în loc să îl trimiteți browserul la fiecare solicitare.
- LocalStorage nu are o dată de expirare. Acesta persistă pe client până când un dezvoltator îl șterge cu JavaScript sau utilizatorul își șterge spațiul de stocare din browser.
- LocalStorage are o capacitate de stocare mult mai mare. The WHATWG spec nu specifică o limită rigidă, dar, conform Wikipedia, dimensiunea minimă a localStorage printre browserele majore este de 5 MB:
Browserele restricționează cookie-urile la 4 kiloocteți. Stocarea web oferă o capacitate de stocare mult mai mare:
- Opera 10.50+ permite 5 MB
- Safari 8 permite 5 MB
- Firefox 34 permite 10 MB
- Google Chrome permite 10 MB per origine
- Internet Explorer permite 10 MB per zonă de stocare
Cazuri de utilizare pentru LocalStorage
LocalStorage este perfect pentru stocarea unei cantități mari de date pe care serverul rareori trebuie să le facă referire. Acestea ar putea fi setările utilizatorului unei aplicații, detaliile de configurare a temei sau datele dintr-un formular completat recent. Acest lucru se datorează faptului că localStorage are o limită de stocare mult mai mare decât cookie-urile, dar trebuie să depuneți un efort suplimentar pentru a trimite datele sale către server.
Dacă stocați datele ca JSON, puteți stoca date destul de complexe folosind localStorage, chiar dacă poate stoca doar șiruri.
LocalStorage este vulnerabil la Atacurile XSS, așa că nu ar trebui să stocați în el date sensibile ale clientului.
SessionStorage
SessionStorage este un magazin de chei/valoare care funcționează aproape la fel ca localStorage, cu excepția unui singur lucru. Datele stocate persistă doar pe durata unei sesiuni de pagină.
Cazuri de utilizare pentru SessionStorage
Puteți utiliza SessionStorage pentru a stoca același tip de date ca și localStorage, dar numai atunci când datele nu trebuie să persiste dincolo de o sesiune de pagină.
IndexedDB
IndexedDB este un browser API puternic pentru stocarea unor cantități mari de date structurate. Este o bază de date tranzacțională, orientată pe obiecte, care stochează date în perechi cheie/valoare.
Dacă aveți de-a face cu cantități mai mici de date, localStorage/sessionStorage este alegerea mai bună și mai ușoară. Din păcate, acestea sunt limitate de capacitatea lor de stocare și de faptul că pot stoca doar date șiruri. IndexedDB nu numai că permite stocarea diferitelor tipuri de date, inclusiv fișiere/date binare, dar poate stoca și mult mai multe date. IndexedDB construiește, de asemenea, indecși ai conținutului său pentru a permite căutarea rapidă a bazei de date.
Cazuri de utilizare pentru IndexedDB
IndexedDB este în esență o bază de date NoSQL în browser și poate stoca cantități foarte mari de date. Orice caz de utilizare care necesită stocarea a peste 10 MB de date este adecvat pentru IndexedDB.
Spre deosebire de celelalte forme de stocare în browser, IndexedDB nu se limitează la stocarea șirurilor. IndexedDB poate stoca date de toate tipurile JavaScript standard. Dacă construiți o aplicație web pentru a funcționa în principal offline, puteți utiliza IndexedDB pentru a stoca toate datele aplicației.
Stocarea pe partea clientului este flexibilă și puternică
Termenul de stocare pe partea client se referă la stocarea datelor aplicației în browser. Stocarea pe partea clientului este esențială pentru funcționarea majorității aplicațiilor web moderne. Există diferite tipuri de stocare pe partea clientului: cookie-uri, local/sessionStorage și IndexedDB.
Toate tipurile de stocare în browser au limite diferite privind capacitatea și tipul de date pe care le pot stoca. Cookie-urile sunt cel mai limitat tip, local/sessionStorage este cel mai convenabil, iar IndexedDB este cel mai puternic.