Klienta puses krātuve ir būtiska tīmekļa lietojumprogrammām. Tā var nebūt tik necaurlaidīga kā servera puses krātuve, taču bez tās tīmekļa lietotnes nevarētu ieviest daudzas modernas funkcijas. Visu veidu funkcijas ir atkarīgas no klienta puses krātuves, sākot no spēļu sesijām līdz iepirkumu groziem e-komercijas vietnēs.

Klienta puses krātuve arī ļauj tīmekļa lietotnēm ieviest uz privātumu orientētu arhitektūru. Varat to izmantot, lai nodrošinātu, ka sensitīvie dati nekad netiek atstāti lietotāja ierīcē.

Kas ir klienta puses krātuve?

Tīmekļa izstrādē klienta puses krātuve attiecas uz dažādiem veidiem, kā tīmekļa pārlūkprogrammas var uzglabāt datus. Lietojumprogramma pēc tam var izmantot šos datus, lai lietotājiem nodrošinātu funkcionalitāti. Klienta puses krātuve ir būtiska vairāku iemeslu dēļ.

  • Klientā saglabātajiem datiem var piekļūt ievērojami ātrāk, un jūsu lietotne var tiem piekļūt bez interneta.
  • Klienta puses krātuve ļauj jūsu lietojumprogrammai vieglāk atcerēties katra lietotāja preferences.
  • Dažu datu pastāvīga glabāšana klientā atvieglo lietotāja privātuma aizsardzību.
  • Visu lietojumprogrammu datu glabāšana serverī ir dārga, īpaši lielos apmēros.

Ir vairāki dažādi klienta puses krātuves veidi, kurus varat izmantot savās tīmekļa lietotnēs.

Sīkdatnes

Pārlūka sīkfails ir atslēgas/vērtības datu daļa, kas jūsu datorā tiek saglabāta kā virkne. Pārlūkprogrammas pēc katra pieprasījuma nosūta visas konkrētas vietnes sīkfailus vietnes serverim. Sīkfaili bija pirmais (un kādu laiku arī vienīgais) klienta puses krātuves veids.

Sīkfaila lielumam nav oficiālu ierobežojumu, taču atsevišķas pārlūkprogrammas nosaka atšķirīgus ierobežojumus iestatītajam sīkfailu izmēram un skaitam. The RFC 6265 6.1. sadaļa norāda, ka pārlūkprogrammām (lietotāju aģentiem) ir jānodrošina šādas minimālās sīkfailu iespējas:

Praktiskām lietotāju aģentu ieviešanām ir ierobežojumi attiecībā uz to sīkfailu skaitu un lielumu, ko tie var uzglabāt. Vispārējas lietošanas lietotāju aģentiem BŪTU jānodrošina katra no šīm minimālajām iespējām:

  • Vismaz 4096 baiti katrā sīkfailā (ko mēra pēc sīkfaila nosaukuma, vērtības un atribūtu garuma summas).
  • Vismaz 50 sīkfaili vienā domēnā.
  • Kopā vismaz 3000 cepumu.

Sīkfaili var palikt pārlūkprogrammā dažādu laiku. Dažiem derīguma termiņš beidzas lapas sesijas beigās, un dažiem ir patvaļīgi derīguma termiņi, kas var ieilgt pat mēnešus nākotnē.

Pārlūkprogrammas izveido lapas sesiju, kad atverat jaunu cilni, un beidz to, kad aizverat cilni vai pārlūkprogrammu. Ja atkārtoti ielādējat vai atsvaidzināt lapu, pārlūkprogramma nepārtrauks lapas sesiju.

Sīkdatņu lietošanas gadījumi

Sīkdatnes ir vislabāk piemērotas nelielu datu daļu glabāšanai, kas serverim bieži ir jālasa vai jāmaina. Kāpēc?

  • Sīkfaili tiek automātiski pievienoti visiem tīkla pieprasījumiem
  • Sīkfaili var saglabāt tikai nelielu daudzumu virkņu datu.

Varat izmantot sīkfailus, lai identificētu lietotāju (piemēram, sesijas ID), reģistrētu lapas apmeklējumu grāmatzīmju pievienošanai vai saglabātu spēles labāko rezultātu.

Vietējā krātuve

Tāpat kā sīkfails, arī localStorage ir atslēgu/vērtību krātuve, kurā tiek glabāti virkņu dati. Lai gan abi krātuves veidi ir līdzīgi, localStorage un sīkfaili atšķiras vairākos veidos.

  • LocalStorage ir atkarīga no JavaScript.
  • Vietējā krātuvē dati galvenokārt atrodas pārlūkprogrammā. Jums tas ir apzināti jānosūta serverim, nevis pārlūkprogrammai pēc katra pieprasījuma.
  • LocalStorage nav derīguma termiņa. Tas tiek saglabāts klientā, līdz izstrādātājs to izdzēš, izmantojot JavaScript vai lietotājs notīra pārlūkprogrammas krātuvi.
  • LocalStorage ir daudz lielāka atmiņas ietilpība. The WHATWG spec nenorāda stingru ierobežojumu, bet saskaņā ar Wikipedia, minimālais vietējās krātuves lielums starp lielākajām pārlūkprogrammām ir 5 MB:

Pārlūkprogrammas ierobežo sīkfailu lielumu līdz 4 kilobaitiem. Tīmekļa krātuve nodrošina daudz lielāku krātuves ietilpību:

  • Opera 10.50+ nodrošina 5 MB
  • Safari 8 pieļauj 5 MB
  • Firefox 34 pieļauj 10 MB
  • Pārlūkprogrammā Google Chrome ir atļauts 10 MB vienam sākumam
  • Internet Explorer katrā krātuves apgabalā pieļauj 10 MB

Izmantot gadījumus LocalStorage

LocalStorage ir lieliski piemērota liela datu apjoma glabāšanai, uz kuru serverim reti ir jāatsaucas. Tie var būt lietojumprogrammas lietotāja iestatījumi, motīva konfigurācijas informācija vai dati nesen aizpildītā veidlapā. Tas ir tāpēc, ka vietējai krātuvei ir daudz lielāks krātuves ierobežojums nekā sīkfailiem, taču jums ir jāpieliek papildu pūles, lai nosūtītu tās datus uz serveri.

Ja datus glabājat kā JSON, varat glabāt pietiekami sarežģītus datus, izmantojot localStorage, lai gan tajā var saglabāt tikai virknes.

Vietējā krātuve ir neaizsargāta pret XSS uzbrukumi, tāpēc tajā nevajadzētu glabāt sensitīvus klienta datus.

SessionStorage

SessionStorage ir atslēgu/vērtību krātuve, kas darbojas gandrīz tāds pats kā localStorage, izņemot vienu lietu. Saglabātie dati saglabājas tikai lapas sesijas laikā.

SessionStorage izmantojiet ietvarus

Varat izmantot SessionStorage, lai saglabātu tāda paša veida datus kā localStorage, taču tikai tad, ja datiem nav jāpaliek pēc lapas sesijas.

IndexedDB

IndexedDB ir jaudīga pārlūkprogrammas API liela apjoma strukturētu datu glabāšanai. Tā ir darījumu, objektorientēta datu bāze, kas glabā datus atslēgu/vērtību pāros.

Ja strādājat ar mazāku datu apjomu, vietēja krātuve/sessionStorage ir labāka un vienkāršāka izvēle. Diemžēl tos ierobežo to krātuves ietilpība un fakts, ka tajos var saglabāt tikai virkņu datus. IndexedDB ne tikai ļauj uzglabāt dažāda veida datus, tostarp failus/bināros datus, bet arī var uzglabāt daudz vairāk datu. IndexedDB arī veido sava satura indeksus, lai nodrošinātu ātru datu meklēšanu.

IndexedDB izmantošanas gadījumi

IndexedDB būtībā ir NoSQL datu bāze pārlūkprogrammā, un tajā var saglabāt ļoti lielu datu apjomu. Jebkurš lietošanas gadījums, kurā jāuzglabā vairāk nekā 10 MB datu, ir piemērots IndexedDB.

Atšķirībā no citiem pārlūka krātuves veidiem, IndexedDB neaprobežojas tikai ar virkņu glabāšanu. IndexedDB var uzglabāt visu standarta JavaScript veidu datus. Ja veidojat tīmekļa lietojumprogrammu, lai tā darbotos galvenokārt bezsaistē, varat izmantot IndexedDB, lai saglabātu visus lietojumprogrammas datus.

Klienta puses krātuve ir elastīga un jaudīga

Termins klienta puses krātuve attiecas uz lietojumprogrammu datu glabāšanu pārlūkprogrammā. Klienta puses krātuve ir būtiska mūsdienu tīmekļa lietojumprogrammu darbībai. Pastāv dažādi klienta puses krātuves veidi: sīkfaili, lokālā/sesijas krātuve un IndexedDB.

Visiem pārlūkprogrammu krātuves veidiem ir dažādi ierobežojumi attiecībā uz to ietilpību un glabājamo datu veidu. Sīkfaili ir visierobežotākais veids, vietējais/sessionStorage ir visērtākais, un IndexedDB ir visspēcīgākais.