Ako sa rozhodujete kam ukladať nastavenia SPA appky / FE časti? rubrika: Programování: JavaScript

7 xxar3s
položil/-a 24.10.2021
 
upravil/-a 24.10.2021

Pri klientskej web aplikácii je veľa možností kam uložiť rôzne nastavenia.

Od localStorage cez sessionStorage (ak je to jednorázové nastavenie) cez IndexedDB, WebSQL, až po databázu na strane servera.

Ako sa rozhodujete, ktoré nastavenia ukladať na klientovi a ktoré na server? Ja sa snažím vačšinu nastavení ukladať na server... Lenže pri responzívnej stránke sa môže stať, že si užívateľ pustí stránku na desktope, mobile, laptope a tablete. A pre každé zariadenie môže požadovať iný set nastavení... vtedy dávam nastavenia do localStorage (sessionStorage moc nepoužívam), akurát s niektorými nastaveniami potom potrebujem pracovať aj na serveri (nato sú zas lepšie cookies)

Btw čo ukladáte do IndexedDB? alebo WebSQL? Na stránke Mozilly sa píše:

"IndexedDB is a low-level API for client-side storage of significant amounts of structured data, including files/blobs. This API uses indexes to enable high-performance searches of this data. While Web Storage is useful for storing smaller amounts of data, it is less useful for storing larger amounts of structured data. IndexedDB provides a solution. This is the main landing page for MDN's IndexedDB coverage — here we provide links to the full API reference and usage guides, browser support details, and some explanation of key concepts."

Zdroj: https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API

Viete mi dať inšpiráciu aké dáta ukladať do klientskej DB? Mňa napadli napríklad E-Shopy wishlist, obsah košíka atď.

odkaz
4 dominios
odpověděl/-a 25.10.2021

Vzdy zalezi od konkretneho use-case. Zaroven treba poznat cielovu skupinu. Robil som interny system, kde to mohli pouzivat ludia len kazdy zo svojho PC a korporat im vynutil 1 browser: vtedy jasna volba na localStorage. Inokedy, ak viem ze nieco je pre usera naozaj dolezite a zaroven viem, ze casto meni devices, tak to musi ist na server niekam.

Zo skusenosti, najcastejsie ukladam profil na BE mam tam pomerne rozsiahle jeho nastavenia personalizacie. V browseri su potom menej podstatne veci, napr. historia vyhladavania, prednastavenie roznych filtrov, volba UI temy (dark/light) a pod. V jednej aplikacii ku tomu riesim aj jednoduchy system invalidacie, ktory sa stara aj o tu local/session storage aby tam zase neboli zle udaje. Raz som sa pokusal aj o akesi mirrorovanie, teda localStorage kopirovalo server (+ nejaka invalidacia a refresh), ale uprimne, bola s tym kopa roboty a viac problemov ako uzitku, znova by som to uz nerobil.

tl;dr
ak je potrebne, aby data prezili hocico a user nikdy nic nestratil -> dat to na server aj za cenu toho, ze to kusok spomali UX
ak tie data len minoritne zlepsuju UX, ale nemaju realnu hodnotu a neobmedzia usera ak sa stratia -> localStorage

PS: S IndexDB a WebSQL nemam vela skusenosti, z toho co som ale cital, tak je to vec vkusu. Lepsie API ako localStorage, ale zase mensia podpora.

Pro plný přístup na Devel.cz se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.