Перший пост по Javascript. Розглянемо принцип роботи localStorage
LocalStorage у JavaScript — це таке сховище для збереження дрібних шматочків інформації на комп’ютері користувача, прямо у його браузері. Він працює на принципі «ключ-значення», тобто ти можеш зберегти деяке значення під певним ключем і потім отримати його назад. Ось пара прикладів, як з ним працювати:
// Записати дані в LocalStorage
localStorage.setItem('мійКлюч', 'моєЗначення');
// Отримати дані з LocalStorage
var моєЗначення = localStorage.getItem('мійКлюч');
// Видалити дані з LocalStorage
localStorage.removeItem('мійКлюч');
// Очистити усі дані в LocalStorage
localStorage.clear();
Демонстрація роботи localStorage
Основними особливостями localStorage є:
- Спільний доступ з усіх вкладок і вікон для одного і того ж самого сайту.
- Термін дії даних не закінчується. Дані залишаються після перезавантаження браузера і навіть перезавантаження ОС.
Наприклад, якщо ви запустите цей код…
localStorage.setItem('test', 1);
…І закриєте/відкриєте браузер або просто відкриєте ту саму сторінку в іншому вікні, то зможете отримати дані так:
alert( localStorage.getItem('test') ); // 1
Прикольна річ в тому, що ці дані залишаються в LocalStorage і після того, як закрити вкладку браузера чи навіть перезапустити його. Тобто, якщо користувач зберігає якісь дані сайту, то вони залишаться в браузері.
Є одне обмеження: можна зберегти приблизно 5 МБ даних. Так що не переборщи зі зберіганням.
Ще одна річ важлива — LocalStorage працює тільки для того самого домену, на якому були збережені дані. Це означає, що сайт example.com не може отримати доступ до даних, збережених на site.com.
Отже, якщо тобі треба щось просте і швидке для зберігання кількох речей на боці клієнта, LocalStorage — це твій вибір! Наприклад можна зробити перемикач на темну тему, увімкнути налаштування, яке буде приховувати деякі блоки (div) сайту, або повідомлення про кукі.
Ми вже маємо cookies. Навіщо додаткові об’єкти?
- На відміну від файлів cookies, об’єкти веб-сховища не надсилаються на сервер із кожним запитом. Завдяки цьому ми можемо зберігати набагато більше даних. Більшість браузерів дозволяють принаймні 5 мегабайтів даних (або більше), користувач може навіть змінити цей об’єм.
- Крім того, на відміну від файлів cookies, сервер не може маніпулювати об’єктами сховища через HTTP-заголовки. Все зроблено на JavaScript.
- Сховище прив’язане до оригінального сайту (домен/протокол/порт). Таким чином, що різні протоколи або субдомени мають різні об’єкти зберігання, і не можуть отримати доступ до даних один одного.
Чим відрізняється localStorage від sessionStorage? 5 mb можно засунути в localStorage + 5 mb в sessionStorage і того 10 mb. З нюансами звісно.
@lemmy Мінуси WebStorage що є доступ з JS, тому дані користувачів можуть утікати. Кукі в цьому плані більш захищені, тому що можно відпрвити HttpOnly куку, до якої немає доступа з JS рантайма.
@lemmy HttpOnly-кукі + JWT класне поєднання, тому що можно відносно безпечно зберігати в даних на клієнті дані, які підписані ключем. Це набагато цікавіше ніж просто ідентифікатор сессії.