Junior
Paaiškinkite skirtumą tarp cookies, sessionStorage ir localStorage.
sobes.tech AI
Atsakymas iš AI
| Mechanizmas | Apytikslis dydis | Gyvenimo trukmė | Prieiga | Perduodama į serverį | Naudojimas |
|---|---|---|---|---|---|
| Cookies | 4 KB | Galiojimo laikas, nustatytas serverio arba naršyklės | Dabartinis dokumentas ir subdomenai (priklauso nuo nustatymų) | Kiekvieno HTTP užklausos metu | Autentifikacija, sekimas, naudotojo pritaikyti nustatymai |
| localStorage | 5-10 MB | Neribota (kol naudotojas ištrina) | Tik dabartinis šaltinis (protokolas, domenas, prievadas) | Ne | Naudotojo nustatymų saugojimas, programos būsenos duomenys |
| sessionStorage | 5-10 MB | Iki skirtuko arba naršyklės lango uždarymo | Tik dabartinis šaltinis (protokolas, domenas, prievadas) | Ne | Duomenų saugojimas vienos sesijos metu |
Cookies:
- Siunčiami su kiekvienu HTTP užklausa į serverį, kas gali padidinti srautą.
- Pagrindinis tikslas: naudotojo identifikavimas (sesijos cookies), pageidavimų išsaugojimas, naudotojo veiksmų sekimas.
- Pasiekiami tiek kliento (JavaScript), tiek serverio pusėje.
- Gali būti apriboti pagal domeną ir kelią.
- Laikomi mažiau saugiais saugant jautrius duomenis dėl automatinio siuntimo į serverį.
localStorage:
- Duomenys saugomi vietiniame naršyklės atmintyje.
- Naudojamas nuolatiniam duomenų saugojimui, kuris nereikalauja siųsti į serverį su kiekvienu užklausa.
- Turi paprastą JavaScript API.
- Duomenys saugomi kaip raktas-reikšmė poros.
- Nepasiekiami iš kitų originų.
// Nustatyti reikšmę
localStorage.setItem('username', 'john.doe');
// Gauti reikšmę
let username = localStorage.getItem('username');
// Pašalinti reikšmę
localStorage.removeItem('username');
// Išvalyti visą localStorage
localStorage.clear();
sessionStorage:
- Panašus į localStorage, bet duomenys saugomi tik iki dabartinio skirtuko arba naršyklės lango uždarymo.
- Idealiai tinka laikiniems duomenims, susijusiems su dabartine sesija (pvz., formos duomenys, pirkinių krepšelis).
- Taip pat turi paprastą JavaScript API, panašų į localStorage.
- Duomenys prieinami tik dabartiniame šaltinyje.
// Nustatyti reikšmę
sessionStorage.setItem('sessionId', 'abc123');
// Gauti reikšmę
let sessionId = sessionStorage.getItem('sessionId');
// Pašalinti reikšmę
sessionStorage.removeItem('sessionId');
// Išvalyti visą sessionStorage
sessionStorage.clear();