Місце зберігання даних: Local Storage проти Session Storage

pic

Уявіть, що ви працюєте над веб-додатком і вам потрібно зберегти якісь дані, наприклад, ім’я користувача, щоб використовувати їх пізніше. Зазвичай, якщо ви створите змінну в консолі браузера і оновите сторінку, ця змінна зникне — вона тимчасова. Це може бути неприємно, якщо вам потрібно, щоб ці дані зберігалися після перезавантаження сторінки. Ось тут на допомогу приходить Local Storage!

Що таке Local Storage?

Local Storage — це вбудована функція сучасних веб-браузерів, яка дозволяє зберігати пари ключ-значення безпосередньо в браузері. Це ніби маленька приватна база даних для вашого додатка, що знаходиться в браузері користувача. Найкраща частина? Дані, які ми зберігаємо в Local Storage, не зникають після оновлення сторінки або закриття браузера.
Воно залишатиметься там, поки ми не видалимо його вручну або користувач не очистить свої дані браузера.

Основні поняття:

  • Пари ключ-значення (Key-Value Pairs): Local Storage зберігає дані у вигляді пар ключ-значення, де кожен ключ — це рядок, що унікально ідентифікує збережені дані, а значення — це самі дані (також збережені як рядок).
  • Тривалість зберігання (Persistence): Дані, що зберігаються в Local Storage, зберігаються навіть після закриття браузера. Вони залишаються доступними, поки не будуть явно видалені або поки користувач не очистить свої дані браузера.
  • Ємність пам'яті (Storage Capacity): Local Storage має більшу ємність пам'яті, ніж cookies (печиво). Ліміт змінюється в залежності від браузера, але зазвичай становить близько 5 МБ на один ресурс (домен).
  • Безпека (Security): Local Storage доступний через JavaScript, що робить його вразливим до атак типу XSS (cross-site scripting). Тому чутливу інформацію не слід зберігати в Local Storage.

🗯️ Методи взаємодії з Local Storage:

1.
setItem(key, value)

Метод setItem в Local Storage використовується для збереження даних у вигляді пари ключ-значення. Як ключ, так і значення повинні бути рядками. Якщо значення не є рядком (наприклад, об'єктом або числом), його потрібно перетворити у формат рядка (зазвичай JSON) перед збереженням.

// localStorage.setItem(key, value)  

localStorage.setItem('name', 'Alice')
  1. getItem(key)

Метод getItem в Local Storage використовується для отримання даних, збережених у браузері за певним ключем. Якщо ключ існує, метод повертає відповідне значення як рядок. Якщо ключ не знайдено, метод повертає null.

// localStorage.getItem(key)  

console.log(localStorage.getItem('name'))
  1. removeItem(key)

Метод removeItem в Local Storage використовується для видалення певної пари ключ-значення з Local Storage. Це корисно, коли дані більше не потрібні або ви хочете очистити непотрібні елементи з пам'яті.
Він не викликає помилку, якщо ключ не існує.

// localStorage.removeItem(key)  

localStorage.removeItem('name')
  1. clear()

Метод clear використовується для видалення всіх пар ключ-значення, збережених в Local Storage. На відміну від removeItem, який видаляє конкретний елемент, clear очищує всі дані, збережені в Local Storage для поточного домену.

// localStorage.clear();  
localStorage.setItem('username', 'JohnDoe');  
localStorage.setItem('isLoggedIn', 'true');  

console.log(localStorage.getItem('username')); // Виведе: JohnDoe  
console.log(localStorage.getItem('isLoggedIn')); // Виведе: true  

// Очищення всіх даних  
localStorage.clear();  

// Перевірка, чи Local Storage порожній  
console.log(localStorage.getItem('username')); // Виведе: null  
console.log(localStorage.getItem('isLoggedIn')); // Виведе: null
  1. key(n)

Метод key(n) використовується для отримання назви ключа за конкретним індексом в Local Storage.
Оскільки Local Storage зберігає пари ключ-значення в упорядкованому списку, цей метод допомагає отримати доступ до ключів за їх позицією.

// localStorage.key(n);  

// Зберігаємо кілька пар ключ-значення  
localStorage.setItem('username', 'JohnDoe');  
localStorage.setItem('theme', 'dark');  
localStorage.setItem('isLoggedIn', 'true');  

// Отримуємо ключ за індексом 0  
console.log(localStorage.key(0)); // Виведе: "username"  

// Отримуємо ключ за індексом 1  
console.log(localStorage.key(1)); // Виведе: "theme"  

// Спробуємо вийти за межі індексів  
console.log(localStorage.key(5)); // Виведе: null

Ітерація по всіх ключах

Ви можете використовувати key(n) разом з localStorage.length для ітерації по всіх збережених ключах:

for (let i = 0; i < localStorage.length; i++) {  
 console.log(localStorage.key(i)); // Виводить кожне ім'я ключа  
}

6.
length

Властивість length вказує на кількість пар ключ-значення, які наразі зберігаються в Local Storage для поточного домену.

localStorage.length;

‼️Зберігання об'єктів у localStorage :->

Local Storage підтримує зберігання лише рядків. Щоб зберегти об'єкти, нам потрібно спершу перетворити об'єкт у рядок за допомогою серіалізації JSON (JSON.stringify), перед тим як зберегти його.
При отриманні об'єкта ми можемо перетворити його назад у його початкову форму за допомогою десеріалізації JSON (JSON.parse).

// Створення об'єкта  
const user = {  
 name: 'Alice',  
 age: 25,  
 isAdmin: true  
};  

// Зберігаємо об'єкт в Local Storage  
localStorage.setItem('user', JSON.stringify(user));  

// Отримуємо об'єкт з Local Storage  
const storedUser = JSON.parse(localStorage.getItem('user'));  

// Доступ до властивостей об'єкта  
console.log(storedUser.name); // Виведе: Alice  
console.log(storedUser.age); // Виведе: 25  
console.log(storedUser.isAdmin); // Виведе: true

Що таке Session Storage?

Session Storage — це механізм веб-зберігання, який дозволяє зберігати дані на час сесії сторінки. Сесія визначається як час, який користувач проводить на одній вкладці браузера.
На відміну від Local Storage, який зберігає дані між сесіями браузера, дані в Session Storage очищуються, коли завершується сесія сторінки (зазвичай коли вкладка або браузер закривається).

⚆_⚆ Сесія сторінки триває, поки веб-браузер відкритий, і зберігається після оновлення сторінки.

Якщо ви відкриєте кілька вкладок або вікон з тим самим URL, веб-браузер створює окремий sessionStorage для кожної вкладки або вікна.
Тому дані, збережені в одній вкладці веб-браузера, не можуть бути доступні в іншій вкладці.

Коли ви закриваєте вкладку або вікно, веб-браузер завершує сесію і очищує дані в sessionStorage.

Використання Session Storage

Session Storage працює подібно до Local Storage, але головна різниця в тому, що дані зберігаються лише на час сесії сторінки.

Методи Session Storage

  • sessionStorage.setItem(key, value) – Зберігає дані.
  • sessionStorage.getItem(key) – Отримує дані.
  • sessionStorage.removeItem(key) – Видаляє дані.
  • sessionStorage.clear() – Очищає всі дані.
  • sessionStorage.key(n) – Отримує ключ за конкретним індексом.
  • sessionStorage.length – Отримує загальну кількість збережених елементів.

Рекомендую подивитися:

https://youtu.be/MOd5cTJ6kaA?si=o07djtpPlPbkjgxG

Перекладено з: Local Storage vs Session Storage

Leave a Reply

Your email address will not be published. Required fields are marked *