Pogoste rešitve za shranjevanje podatkov na sprednji strani vključujejo predvsem:Cookie、Web Storage、IndexedDB、WebSQL、local Storage、session Storageitd., na primer:
| lastnost | Piškotek | localStorage | sejShranjevanje | indexedDB | | Življenjski cikel podatkov | Običajno jih ustvari strežnik, čas poteka je mogoče nastaviti; Lahko se generirajo tudi komponente, kot sta sprejemanje na front-endu in js-piškotek | Če ni očiščen, je vedno tam; Ko je brskalnik zaprt, se tudi ta shrani lokalno, vendar ni podprt med brskalniki | Čiščenje in osveževanje strani bosta še vedno obstajala, ko je stran zaprta, interakcija med stranmi pa ni podprta | Če ni očiščen, je vedno obstajal | | Velikost podatkovnega pomnilnika | 4K | 5M | 5M | Brez omejitve velikosti | | Komunicirajte s strežnikom | Vsakič je vključen v zahtevani glavi, kar vpliva na uspešnost zahteve; Hkrati pa, ker je vključen v zahtevo, je dovzeten tudi za varnostne težave | Ne sodeluje | Ne sodeluje | Ne sodeluje | | Posebnost | Pari ključ-vrednost niza shranjujejo podatke lokalno | Pari ključ-vrednost niza shranjujejo podatke lokalno | Pari ključ-vrednost niza shranjujejo podatke lokalno | IndexedDB je nerelacijska podatkovna baza (operacije prek SQL ukazov niso podprte). Lahko shranjuje velike količine podatkov, zagotavlja vmesnike za poizvedbe in gradi indekse, česar druge rešitve za shranjevanje ne morejo zagotoviti. |
IndexedDB
Ta članek predvsem opisuje uporabo IndexedDB za sprednjo shrambo in je predstavljen takole:
IndexedDB je osnovni API za shranjevanje velikih količin strukturiranih podatkov (tudi datotek/binarnih velikih objektov (blobov)) na strani odjemalca. API uporablja indekse za omogočanje visokozmogljivega iskanja podatkov. Čeprav je spletna shramba uporabna za shranjevanje manjših količin podatkov, ni tako dobra kot shranjevanje večjih količin strukturiranih podatkov. IndexedDB ponuja rešitev za ta scenarij. Ta stran je glavna vodilna stran za MDN IndexedDB – tukaj ponujamo popoln vodič za API in uporabo, podrobnosti o podpori brskalnika ter povezave do nekaterih razlag ključnih konceptov. IndexedDB ima naslednje funkcije:
(1) Shranjevanje parov ključ-vrednost. IndexedDB uporablja objektno shrambo za shranjevanje podatkov. Vse vrste podatkov je mogoče shraniti neposredno, vključno z JavaScript objekti. V objektnem repozitoriju so podatki shranjeni v obliki "parov ključ-vrednost", pri čemer ima vsak podatkovni zapis ustrezni primarni ključ, ki je edinstven in ga ni mogoče podvajati, sicer se pojavi napaka.
(2) Asinhrona. IndexedDB brskalnika ne zaklene in uporabnik lahko še vedno izvaja druge operacije, v nasprotju z LocalStorage, ki deluje sinhrono. Asinhrona zasnova preprečuje branje in zapisovanje velikih količin podatkov, kar upočasnjuje delovanje spletnih strani.
(3) Podporne zadeve. IndexedDB podpira transakcije, kar pomeni, da če eden od korakov operacije ne uspe, se celotna transakcija prekliče, baza podatkov pa se vrne na stanje pred transakcijo, tako da ni primera prepisovanja le dela podatkov.
(4) omejitev homologije. IndexedDB ima enako omejitev izvora, vsaka baza podatkov pa ustreza domeni, ki jo je ustvarila. Spletne strani lahko dostopajo le do baz podatkov pod lastnimi domenami, ne pa do baz podatkov, ki pokrivajo več domen.
(5) Velik skladiščni prostor. IndexedDB ima veliko večji prostor za shranjevanje kot LocalStorage, običajno ne manjši od 250MB, in zgornje meje ni.
(6) Podpora binarnemu shranjevanju. IndexedDB lahko shranjuje ne le nize, ampak tudi binarne podatke (objekte ArrayBuffer in objekte Blob).
Če je težko začeti neposredno z IndexedDB in ga morate sami enkapsulirati, lahko uporabite nekaj pakiranih paketov, kot sledi:
- localForage: Preprost Polyfill, ki zagotavlja preprosto vrednostno sintakso za podatkovne shrambe na strani odjemalca. V ozadju uporablja IndexedDB, v brskalnikih, ki IndexedDB ne podpirajo, pa se vrača k WebSQL ali localStorage.
- Dexie.js: Ovojnice IndexedDB omogočajo hitrejši razvoj kode s preprosto sintakso.
- ZangoDB: Vmesnik IndexedDB, podoben MongoDB, ki podpira večino znanih funkcij filtriranja, projekcije, razvrščanja, posodabljanja in agregacije MongoDB.
- JsStore: IndexedDB ovojnica s SQL sintakso.
- MiniMongo: MongoDB v pomnilniku odjemalca, podprt z localstorage, sinhronizacija strežnika preko http. MeteorJS uporablja MiniMongo.
- PouchDB: Odjemalec, ki v brskalniku implementira CouchDB z uporabo IndexedDB.
- idb: Majhna (〜1.15k) knjižnica, kjer je večina API-ja podobna IndexedDB, vendar z nekaj manjšimi izboljšavami, ki močno izboljšajo uporabnost baze podatkov.
- idb-keyval: Zelo preprosto in majhno (~600B) shranjevanje parov ključ-vrednost na osnovi obljub, implementirano z IndexedDB.
- sifrr-storage: Zelo majhna (~2 kB) baza podatkov na odjemalski strani, ki temelji na ključu in vrednosti. Implementirano na podlagi IndexedDB, localStorage, WebSQL in piškotkov. Samodejno izbere zgoraj omenjene podprte baze podatkov in jih uporabi po vrstnem redu prioritete.
- lovefield: Lovefield je relacijska podatkovna baza za spletne aplikacije, napisana v JavaScriptu, lahko teče v različnih brskalniških okoljih in nudi SQL-podobni API, ki je hiter, varen in enostaven za uporabo.
Lokalna paša
localForage je hiter in preprost JavaScript repozitorij. localForage izboljša izkušnjo spletnih aplikacij brez povezave z uporabo asinhronega shranjevanja (IndexedDB ali WebSQL) in preprostega API-ja, podobnega localStorage. localForage uporablja localStorage v brskalnikih, ki nimajo podpore za IndexedDB ali WebSQL.
GitHub naslov:Prijava do hiperpovezave je vidna. Kitajski vodič:Prijava do hiperpovezave je vidna.
localForage ponuja dve različni js datoteki, razlike so naslednje:
localforage.js: knjižnica Promise, ki vsebuje Liejevo implementacijo (Prijava do hiperpovezave je vidna.), datoteka je razmeroma velika, sintaksa Promise pa se lahko uporablja v starejših brskalnikih.
localforage.nopromises.js: Ni implementacije Promise, podprte so le nove različice brskalnikov.
Testna koda:
(Konec)
|