Sobes.tech
Junior

Paaiškinkite skirtumą tarp cookies, sessionStorage ir localStorage.

sobes.tech AI

Atsakymas iš AI

Sausainiai, sessionStorage ir localStorage yra žiniatinklio saugyklos mechanizmai, kurie skiriasi pagal paskirtį, galiojimo laiką ir saugomų duomenų kiekį.

  • Cookies: Maži duomenų fragmentai, kuriuos siųs žiniatinklio serveris ir saugos naudotojo kompiuteryje naršyklės pagalba. Siunčiami su kiekvienu vėlesniu prašymu į tą patį serverį. Naudojami autentifikacijai, naudotojo nuostatų saugojimui, pirkinių krepšelio būsenos stebėjimui.

    • Galiojimo laikas: Nustatomas sukūrimo metu (gali būti sesijos arba su nustatytu pasibaigimo laiku).
    • Kiekis: Ribotas, paprastai kelių kilobaitų (apie 4 KB).
  • sessionStorage: Saugo duomenis tik vienai naršyklės sesijai (atidarytam skirtukui arba langui). Duomenys ištrinami uždarius skirtuką arba langą.

    • Galiojimo laikas: Iki skirtuko arba lango uždarymo.
    • Kiekis: Žymiai didesnis nei cookies (paprastai kelių megabaitų).
  • localStorage: Saugo duomenis be galiojimo laiko, kol naudotojas arba scenarijus aiškiai jų neištrina. Pasiekiama visuose to paties domeno skirtukuose ir languose.

    • Galiojimo laikas: Nuolatinis (iki aiškaus ištrynimo).
    • Kiekis: Žymiai didesnis nei cookies (paprastai kelių megabaitų).

Štai trumpas palyginimas:

Mechanizmas Galiojimo laikas Pasiekiamumas Siunčiasi į serverį Kiekis (įprastas) Paskirtis
Cookies Sesijos arba pasibaigus galiojimo laikui Per HTTP antraštes Taip ~4 KB Autentifikacija, stebėjimas, nuostatos
sessionStorage Iki skirtuko arba lango uždarymo Per JS API Ne ~5-10 MB Laikinas sesijos duomenų saugojimas
localStorage Nuolatinis (iki ištrynimo) Per JS API Ne ~5-10 MB Ilgalaikis duomenų saugojimas

JavaScript API pavyzdžiai:

// Cookies (pasiekiama per document.cookie, reikalauja rankinio analizės ir serializacijos)
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";

// sessionStorage
sessionStorage.setItem('id', '123');
let userId = sessionStorage.getItem('id');
sessionStorage.removeItem('id');

// localStorage
localStorage.setItem('theme', 'dark');
let userTheme = localStorage.getItem('theme');
localStorage.removeItem('theme');
localStorage.clear(); // Išvalo visus duomenis localStorage