Sobes.tech
Junior

Обяснете разликата между cookies, sessionStorage и localStorage.

sobes.tech AI

Отговор от AI

Бисквитки, sessionStorage и localStorage - това са механизми за уеб хранилище, които се различават по предназначение, срок на годност и обем на съхраняваните данни.

  • Бисквитки: Малки фрагменти от данни, изпращани от уеб сървър и съхранявани на компютъра на потребителя от уеб браузъра. Изпращат се с всяка следваща заявка към същия сървър. Използват се за удостоверяване, съхраняване на предпочитания на потребителя, проследяване на състоянието на кошницата за пазаруване.

    • Срок на годност: Определя се при създаване (може да бъде сесийна или с определен срок на изтичане).
    • Обем: Ограничен, обикновено няколко килобайта (около 4 KB).
  • sessionStorage: Съхранява данни само за една сесия на браузъра (отворена таб или прозорец). Данните се изтриват при затваряне на таба или прозореца.

    • Срок на годност: До затваряне на таба или прозореца.
    • Обем: Значително по-голям от този на бисквитките (обикновено няколко мегабайта).
  • localStorage: Съхранява данни без срок на годност, докато не бъдат явно изтрити от потребителя или сценарий. Достъпен е във всички табове и прозорци на един и същ домейн.

    • Срок на годност: Постоянен (до явно изтриване).
    • Обем: Значително по-голям от този на бисквитките (обикновено няколко мегабайта).

Ето кратко сравнение:

Механизъм Срок на годност Достъпност Изпраща се към сървъра Обем (типичен) Назначение
Бисквитки Сесийна или с изтичане на срок Чрез HTTP заглавки Да ~4 KB Удостоверяване, проследяване, предпочитания
sessionStorage До затваряне на таба/прозореца Чрез JS API Не ~5-10 MB Временна съхранение на данни за сесията
localStorage Постоянен (до изтриване) Чрез JS API Не ~5-10 MB Дългосрочно съхранение на данни

Примери за използване на JavaScript API:

// Бисквитки (достъп чрез document.cookie, изисква ръчно парсване и сериализация)
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(); // Изчиства всички данни в localStorage