Где программа хранит свои данные после запуска javascript

Ситуации для хранения и обработки данных в браузере включают:

  • сохранение состояния клиентского приложения, такого как текущий экран, введенные данные, пользовательские настройки и т. д.
  • утилиты, которые обращаются к локальным данным или файлам и имеют строгие требования к конфиденциальности
  • прогрессивные веб-приложения (PWA), которые работают в автономном режиме

Вот десять вариантов хранения данных браузера:

  1. JavaScript переменные
  2. Хранилище узлов DOM
  3. Web хранилище (localStorage и sessionStorage)
  4. IndexedDB
  5. Cache API (не используйте AppCache!)
  6. API доступа к файловой системе
  7. API записей файлов и каталогов
  8. cookies
  9. window.name
  10. WebSQL

В этой статье рассматриваются эти десять различных способов хранения данных в браузере, рассматриваются их ограничения, плюсы и минусы, а также наилучшее использование каждого метода. Прежде чем мы перейдем к вариантам, сделаем небольшое примечание о сохранении данных.

Уроки Javascript Как считать данные которые вводит пользователь

Сохранение данных

Как правило, данные, которые сохраняются, будут:

  • Постоянные (persistent): они остаются до тех пор, пока ваш код не решит удалить их, или
  • изменяемые (volatile) : они остаются до завершения сеанса браузера, обычно, когда пользователь закрывает вкладку

Постоянные данные могут быть заблокированы или удалены пользователем, операционной системой, браузером или плагинами в любой момент. Браузер может принять решение об удалении более старых или больших элементов по мере приближения к граничной емкости, выделенной для этого типа хранилища.

Браузеры также записывают состояние страницы. Вы можете уйти с сайта и кликнуть назад или закрыть и снова открыть вкладку; страница должна выглядеть идентично. Переменные и данные, доступные только для сеанса, по-прежнему доступны.

1. Переменные JavaScript

  • размер — нет строгих ограничений, но при заполнении памяти может произойти замедление работы браузера или сбои
  • скорость чтения / записи — самый быстрый вариант
  • сохранность — плохая: данные стираются при обновлении браузера

Сохранение состояния в переменных JavaScript — самый быстрый и простой вариант. Я уверен, что вам не нужен пример, но …

  • легко использовать
  • быстрота
  • нет необходимости в сериализации или десериализации
  • ненадежность: обновление или закрытие вкладки стирает все
  • сторонние скрипты могут исследовать или перезаписывать глобальные значения (window). Вы уже используете переменные. Вы можете рассмотреть возможность сохранения состояния переменной при выгрузке страницы .

2. Хранилище узлов DOM

  • размер — нет строгих ограничений, но не идеально для большого количества данных
  • скорость чтения / записи — Быстрый
  • сохранность — плохая: данные могут быть удалены другими скриптами или обновлением

Большинство элементов DOM на странице или в памяти могут хранить значения в именованных атрибутах. Безопаснее использовать имена атрибутов с префиксом data-:

JS[1] — JS — Путь Самурая, Что такое программа, UI, данные. НОВЫЙ БЕСПЛАТНЫЙ КУРС IT-KAMASUTRA

  • атрибут никогда не будет иметь связанных функций HTML
  • Вы можете получить доступ к значениям с помощью свойства dataset или через методы .setAttribute() и .getAttribute().

Значения хранятся в виде строк, поэтому может потребоваться сериализация и десериализация. Например:

  • вы можете определять значения в JavaScript или HTML, например
  • полезно для хранения состояния конкретного компонента
  • DOM работает быстро! (вопреки распространенному мнению)
  • ненадёжно: обновление или закрытие вкладки стирает значения
  • только строки: требуется сериализация и десериализация
  • большой DOM влияет на производительность
  • сторонние скрипты могут исследовать или перезаписывать значения

Хранилище узлов DOM работает медленнее, чем переменные. Используйте его экономно в ситуациях, когда удобно хранить состояние компонента в HTML.

3. Web хранилище (localStorage и sessionStorage)

  • размер — 5 МБ на домен
  • скорость чтения / записи — синхронная работа: может быть медленной
  • сохранность — данные остаются до тех пор, пока не будут удалены

Веб-хранилище предоставляет два похожих API для определения пар имя/значение. Используйте:

  • window.localStorage для хранения постоянных данных и
  • window.sessionStorage для сохранения данных только сеанса, пока вкладка браузера остается открытой

Храните или обновляйте именованные элементы с помощью .setItem():

Получайте их с помощью .getItem():

И удалите их с помощью .removeItem():

Другие свойства и методы включают:

  • .length: количество хранимых элементов
  • .key(N): имя N-го ключа
  • .clear(): удаление всех сохраненных элементов

Изменение любого значения вызывает событие хранения в других вкладках / окнах браузера, подключенных к тому же домену. Ваше приложение может ответить соответствующим образом:

  • простой API (пары имя / значение)
  • параметры сеанса и постоянного хранилища
  • хорошая поддержка браузера
  • Только строки: требуется сериализация и десериализация
  • неструктурированные данные без транзакций, индексации или поиска
  • синхронный доступ повлияет на производительность больших наборов данных

Веб-хранилище идеально подходит для простых, небольших и разовых значений. Оно менее практично для хранения больших объемов структурированной информации, но вы можете избежать проблем с производительностью, записывая данные при выгрузке страницы.

4. IndexedDB

  • размер — зависит от устройства. Не менее 1 ГБ, но может составлять до 60% оставшегося дискового пространства
  • скорость чтения / записи — быстрый
  • сохранность — данные остаются до тех пор, пока не будут удалены

IndexedDB предлагает низкоуровневый API, похожий на NoSQL, для хранения больших объемов данных. Хранилище можно индексировать, обновлять с помощью транзакций и выполнять поиск с помощью асинхронных методов.

IndexedDB API сложен и требует некоторого манипулирования событиями. Следующая функция открывает соединение с базой данных при передаче имени, номера версии и дополнительной функции обновления (вызываемой при изменении номера версии):

Следующий код подключается к базе данных myDB и инициализирует хранилище объектов todo (аналогично таблице SQL или MongoDB). Затем он определяет автоматически увеличивающийся ключ с именем id:

Как только соединение будет готово, вы можете с помощью .add добавить новые элементы данных в транзакцию:

И вы можете получить значения, например, первый элемент:

  • гибкое хранилище данных с самым большим пространством
  • надежные транзакции, возможности индексации и поиска
  • хорошая поддержка браузера
  • сложный обратный вызов и API на основе событий
  • IndexedDB — лучший вариант для надежного хранения больших объемов данных, но вам может понадобиться библиотека-оболочка, такая как idb , Dexie.js или JsStore .
Читайте также:
Программы для программирования для новичков

5. Cache API

  • размер — зависит от устройства, но Safari ограничивает каждый домен до 50 МБ
  • скорость чтения / записи — быстрый
  • сохранность — данные остаются до очистки или через две недели в Safari

Cache API обеспечивает хранение для пар HTTP запросов и ответов. Вы можете создать любое количество именованных кэшей для хранения любого количества элементов данных сети.

API обычно используется в сервис-воркерах для кэширования сетевых ответов для прогрессивных веб-приложений. Когда устройство отключается от сети, кэшированные ресурсы могут быть повторно использованы, чтобы веб-приложение могло работать в автономном режиме. Следующий код сохраняет сетевой ответ в кэше с именем myCache:

Аналогичная функция может получить элемент из кеша. В этом примере она возвращает основной текст ответа:

  • хранит любой сетевой ответ
  • может улучшить производительность веб-приложений
  • позволяет веб-приложению работать в автономном режиме
  • современный API
  • не практично для хранения состояния приложения
  • возможно менее полезно за пределами прогрессивных веб-приложений

Apple недоброжелательно относится к PWA и Cache API

Cache API — лучший вариант для хранения файлов и данных, полученных из сети. Вы, вероятно, могли бы использовать его для хранения состояния приложения, но он не предназначен для этой цели, и есть варианты получше.

5.5 AppCache

AppCache был предшественником Cache API . Это не то решение для хранения, которое вы ищете. Здесь ничего нет. Пожалуйста, двигайтесь дальше.

6. API доступа к файловой системе

  • размер — зависит от оставшегося места на диске
  • скорость чтения / записи — зависит от файловой системы
  • сохранность — данные остаются до тех пор, пока не будут удалены

API доступа к файловой системе позволяет браузеру читать, записывать, изменять и удалять файлы из локальной файловой системы. Браузеры работают в изолированной среде, поэтому пользователь должен предоставить разрешение на определенный файл или каталог. Чтобы веб-приложение могло читать или записывать данные, как настольное приложение, используют FileSystemHandle.

Следующая функция сохраняет объект Blob в локальный файл:

  • веб-приложения могут безопасно читать и записывать в локальную файловую систему
  • меньше необходимости загружать файлы или обрабатывать данные на сервере
  • отличная функция для прогрессивных веб-приложений
  • минимальная поддержка браузера (только Chrome)
  • API может измениться

Этот вариант хранения для меня очень интересен, но вам придется подождать пару лет, прежде чем он станет жизнеспособным для производственного использования.

7. API записей файлов и каталогов

  • размер — зависит от оставшегося места на диске
  • скорость чтения / записи — неизвестный
  • сохранность — данные остаются до тех пор, пока не будут удалены

API записей файлов и каталогов предоставляют песочницы файловой системы доступной для домена, которые могут создавать, писать, читать и удалять каталоги и файлов.

  • может иметь несколько интересных применений
  • нестандартные, несовместимость между реализациями и поведение могут измениться.

MDN прямо заявляет: не используйте это на производственных сайтах . Поддержка будет в лучшем случае через несколько лет.

  • размер — 80 КБ на домен (20 файлов cookie размером до 4 КБ в каждом)
  • скорость чтения / записи — быстрый
  • сохранность — хорошая: данные остаются до тех пор, пока они не будут удалены или не истечет время их жизни

Файлы cookie — это данные, относящиеся к домену. Они имеют репутацию что они отслеживают людей, но они необходимы для любой системы, которая должна поддерживать состояние сервера, например, для входа в систему. В отличие от других механизмов хранения, файлы cookie (обычно) передаются между браузером и сервером при каждом HTTP-запросе и ответе. Оба устройства могут проверять, изменять и удалять данные cookie.

document.cookie устанавливает значения cookie в клиентском JavaScript. Вы должны определить строку с именем и значением, разделенными символом равенства (=). Например:

Значения не должны содержать запятых, точек с запятой или пробелов, поэтому может потребоваться encodeURIComponent():

К дополнительным настройкам файлов cookie можно добавить разделители через точку с запятой, в том числе:

  • ;domain= : если не установлено, то cookie доступен только в текущем домене URL. Использование ;path=mysite.com разрешило бы на любом поддомене mysite.com.
  • ;path= : если не установлено, cookie доступен только в текущем и дочерних доменах. Установите, ;path=/ чтобы разрешить любой путь в домену.
  • ;max-age= : время истечения срока действия cookie в секундах, например ;max-age=60.
  • ;expires= : дата истечения срока действия cookie, например ;expires=Thu, 04 July 2021 10:34:38 UTC(используйте date.toUTCString() для соответствующего форматирования).
  • ;secure: cookie будет передаваться только по HTTPS.
  • ;HTTPOnly: делает файлы cookie недоступными для клиентского JavaScript.
  • ;samesite=: определяет, может ли другой домен получить доступ к cookie. Может иметь значение lax (по умолчанию, использует файл cookie для текущего домена), strict (останавливает отправку исходного файла cookie при переходе по ссылке из другого домена) или none (без ограничений).

Пример: установить файл cookie, срок действия которого истекает через 10 минут и доступен по любому пути в текущем домене:

document.cookie возвращает строку, содержащую каждую пару имени и значения, разделенную точкой с запятой. Например:

Функция ниже анализирует строку и преобразует ее в объект, содержащий пары имя-значение. Например:

  • надежный способ сохранить состояние между клиентом и сервером
  • ограничен доменом
  • автоматический контроль истечения срока действия с помощью max-age (секунд) или Expires (дата)
  • используется в текущем сеансе по умолчанию (установите дату истечения срока, чтобы данные сохранялись после обновления страницы и закрытия вкладки)
  • файлы cookie часто блокируются браузерами и плагинами (обычно они конвертируются в файлы cookie сеанса, поэтому сайты продолжают работать)
  • плохая реализация JavaScript (лучше всего создать свой собственный обработчик файлов cookie или выбрать библиотеку, такую как js-cookie )
  • только строки (требуется сериализация и десериализация)
  • ограниченное место для хранения
  • cookie могут быть перехвачены сторонними скриптами, если вы не ограничили доступ
  • обвиняются в нарушении конфиденциальности (региональное законодательство может требовать, чтобы вы показывали предупреждение о файлах cookie)
  • данные cookie добавляются к каждому HTTP-запросу и ответу, что может повлиять на производительность (для хранение 50 КБ данных cookie, а затем запроса десяти 1-байтовых файлов потребуется один мегабайт)

Избегайте файлов cookie, используйте их если нет реальной альтернативы.

9. window.name

  • размер — варьируется, но должно быть несколько мегабайт
  • скорость чтения / записи — быстрый
  • сохранность — данные сеанса остаются до закрытия вкладки

Свойство window.name устанавливает и получает имя контекста активного окна. Вы можете установить одно строковое значение, которое будет сохраняться между обновлениями браузера. Например:

Читайте также:
Программа складского учета отзывы

Исследуйте значение, используя:

  • легко использовать
  • может использоваться только для данных сеанса
  • Только строки: требуется сериализация и десериализация
  • страницы в других доменах могут читать, изменять или удалять данные (никогда не используйте их для конфиденциальной информации)

Window.name не предназначен для хранения данных. Это хак, и есть варианты получше.

10. WebSQL

  • размер — 5 МБ на домен
  • скорость чтения / записи — медленная
  • сохранность — данные остаются до тех пор, пока не будут удалены

WebSQL был попыткой перенести в браузер хранилище баз данных, подобное SQL. Пример кода:

Chrome и некоторые версии Safari поддерживают эту технологию, но против нее выступили Mozilla и Microsoft в пользу IndexedDB.

  • разработан для надежного хранения и доступа к данным на стороне клиента
  • знакомый синтаксис SQL, часто используемый серверными разработчиками
  • ограниченная поддержка браузеров
  • несогласованный синтаксис SQL в браузерах
  • асинхронный, но медленный API на основе обратного вызова
  • плохая работа

Не используйте WebSQL! Он не был жизнеспособным вариантом с тех пор, как устарела его спецификация в 2010 году.

Тщательная проверка хранилища

API хранилища может исследовать пространство , доступное для веб-хранилища, IndexedDB, и Cache API. Все браузеры, кроме Safari и IE, поддерживают это API, которое предлагает метод .estimate() для вычисления значений quota (пространства, доступного для домена) и usage (пространства, уже используемого). Например:

Доступны еще два асинхронных метода:

  • .persist() : возвращает true если у сайта есть разрешение на хранение постоянных данных, и
  • .persisted() : возвращает true если сайт уже сохранил постоянные данные

Панель «Приложение» в инструментах разработчика браузера ( в Firefox называется « Хранилище» ) позволяет просматривать, изменять и очищать localStorage, sessionStorage, IndexedDB, WebSQL, файлы cookie и кеш хранилища.

Вы также можете проверить данные cookie, отправленные в заголовках HTTP-запроса и ответа, кликнув любой элемент на панели Network инструментов разработчика.

Ни одно из этих решений для хранения не является идеальным, и вам нужно будет внедрить несколько решений в сложное веб-приложение. Это означает изучение дополнительных API. Но иметь выбор — это хорошо — конечно, при условии, что вы можете подобрать подходящий вариант!

Источник: dzen.ru

JavaScript localStorage: Полное руководство

JavaScript localStorage — это основное хранилище данных, которое находится в объекте Window браузера. Вы можете сохранять любую информацию в localStorage , и она будет сохраняться даже при перезагрузке страницы или закрытии и повторном открытии браузера.

localStorage и связанное с ним sessionStorage являются частью API веб-хранилища. Мы узнаем о них подробнее ниже.

API веб-хранилища предоставляет методы, с помощью которых браузеры могут сохранять пары ключ/значение данных (например, объекты).

Пары ключ/значение, сохраняемые в API веб-хранилища, всегда представлены в виде строк (целочисленные ключи автоматически преобразуются в строки).

Специалист техподдержки 1С АО «Гринатом» , , можно удалённо , По итогам собеседования

Существует набор методов, предоставляемых API веб-хранилища, которые вы можете использовать для доступа, удаления и изменения пар ключ/значение.

В API веб-хранилища доступны два типа хранилища:

  1. sessionStorage,
  2. localStorage.

Что такое LocalStorage

LocalStorage — это часть API веб-хранилища. Он позволяет сохранять постоянные данные (данные сохраняются при перезагрузке браузера и даже при закрытии и повторном открытии браузера) в объекте Window браузера в виде пар ключ/значение строк.

Существует пять методов для работы с LocalStorage :

  1. setItem — устанавливает значение для указанного ключа,
  2. getItem — возвращает значение, связанное с указанным ключом,
  3. removeItem — удаляет пару ключ/значение по указанному ключу,
  4. clear — удаляет все пары ключ/значение из LocalStorage,
  5. key — возвращает имя ключа по указанному индексу.

Разница между sessionStorage и localStorage

И sessionStorage , и localStorage являются частью API веб-хранилища.

sessionStorage доступно только до закрытия браузера, после чего данные удаляются. sessionStorage доступно при перезагрузке, но данные удаляются при закрытии браузера.

localStorage сохраняет данные даже после закрытия браузера, они остаются в нем.

Пользователь может удалить localStorage вручную, а также оно автоматически удаляется, когда пользователь находится в режиме инкогнито или приватном окне и закрывает браузер.

И sessionStorage , и localStorage предоставляют схожие методы для доступа и сохранения данных в браузере.

sessionStorage и localStorage

Контекстная, таргетированная реклама и веб-аналитика

В этой статье познакомимся с веб-хранилищами sessionStorage и localStorage, изучим методы JavaScript для работы, узнаем про их отличия друг от друга, и от файлов cookie, а также рассмотрим примеры использования в Google Tag Manager.

Самая большая проблема при использовании cookie в качестве локального хранилища заключается в том, что:

  • в каждом из них можно храниться максимум 4 Кбайт данных (этого может быть недостаточно для работы веб-приложения);
  • cookie должны отправляться в обоих направлениях при каждой перезагрузке страницы, что может существенно замедлять работу веб-сайта;
  • куки также включаются в каждый HTTP-запрос при передаче данных через Интернет в незашифрованном виде.

С появлением HTML5 мы получили доступ к более объемному веб-хранилищу (между 5 и 10 МБайт на каждый домен), которое сохраняет информацию между загрузками страницы и посещениями сайта (даже после выключения и включения компьютера). Кроме того, данные локального хранилища не отправляются на сервер при каждой загрузке страницы, в связи с чем ускоряется работа веб-приложения.

Веб-хранилище (Web Storage, DOM-хранилище) — это набор механизмов, которые используются для хранения данных локально в веб-браузере пользователя в виде пары ключ/значение. Другими словами, это специально отведенное место в браузере (похоже на небольшую базу данных), в котором мы можем работать с данными — записывать, читать и удалять их.

Существуют два основных типа веб-хранилища:

  1. сессионное хранилище (sessionStorage);
  2. локальное хранилище (localStorage);

Оба типа являются свойствами глобального объекта браузера (window). К ним можно обращаться как window.sessionStorage (или sessionStorage) и window.localStorage (или localStorage) соответственно. В них можно хранить ТОЛЬКО СТРОКОВЫЕ ДАННЫЕ для ключей и их значений.

Разберем каждый из них подробнее.

sessionStorage (сессионное хранилище, хранилище сессии)

Сессионное хранилище — это объект sessionStorage, который позволяет хранить данные для каждого домена, доступные на протяжении сессии, пока открыт браузер, и даже в том случае, если была осуществлена перезагрузка страницы. Однако закрытие вкладки браузера, самого браузера или перезагрузка компьютера приводит к удалению данных из sessionStorage.

Объект sessionStorage используется гораздо реже, чем localStorage.

localStorage (локальное хранилище)

Локальное хранилище — это объект localStorage, который позволяет хранить данные для каждого домена в течение неограниченного времени (после закрытия вкладки браузера, самого браузера, перезагрузки компьютера), а точнее пока пользователь самостоятельно не удалит данные.

Читайте также:
Как работает реферальная программа World of Tanks

Каждый домен имеет доступ к своему хранилищу данных localStorage. Например, localStorage, используемый для, https://osipenkov.ru является отдельным от localStorage, используемым для https://coobiq.com. Субдомены (поддомены) и различные протоколы HTTP (HTTP и HTTPS) имеют независимые друг от друга хранилища данных. Например, localStorage https://gtm.osipenkov.ru используется полностью отдельно от https://osipenkov.ru. Точно так же localStorage https://osipenkov.ru используется отдельно от http://osipenkov.ru.

Некоторые браузеры блокируют localStorage в режиме инкогнито. localStorage работает даже с отключенными cookie.

Примечание: не храните в localStorage конфиденциальную информацию и личные данные пользователией, включая имя, фамилию, дату рождения, пароли, номера кредитных карт, номер телефона, e-mail и многое другое.

Что можно хранить и для чего использовать?

Хранение данных в локальном хранилище очень распространено. Классическим примером использования локального хранилища является веб-приложение типа Ежедневник, когда пользователь составляет список дел на день, и по мере выполнения удаляет их из списка. Для выполнения этой задачи не нужен сервер, подойдет localStorage. Кликнув по задаче из списка, которое человек уже сделал, она будет удаляться с локального хранилища и, следовательно, показываться пользователю больше не будет. Локальное хранилище часто используется для сохранения настроек пользователя на сайте (выбор темы оформления, вид отображения информации), чтобы при следующем заходе эти данные уже были применены к его профилю и повторно не вводились.

Поскольку мы работаем с данными, то можем сохранять в sessionStorage и localStorage все, что связано с идентификацией пользователя — User-Agent, местоположение, IP-адрес, уникальный идентификатор пользователя (Client ID), значение сгенерированного промокода от виджета на сайте, источник перехода, список товаров, добавленных в корзину, пользовательские данные при неудачной попытке отправки на сервер и другие параметры.

Посмотреть, что из себя представляют sessionStorage и localStorage, какие данные там хранятся у разных сайтов, можно в консоли разработчика на вкладе Application (для браузера Google Chrome).

sessionStorage и localStorage

Веб-хранилище (вкладка Application)

Либо использовать команды sessionStorage и localStorage на вкладке Console:

sessionStorage и localStorage

Команда sessionStorage или localStorage (вкладка Console)

Как видим из примера выше, на моем сайте в localStorage хранится достаточно много данных. Большая часть из них — это установленные ключ/значение от онлайн консультанта Talk-Me. Сервис записывает в локальное хранилище данные о приветственном сообщении, времени совершения события, регионе, IP-адресе пользователя, источнике перехода, о последней просмотренной странице и многом другом. Вся эта информация по каждому пользователю потом предоставляется в виде краткого набора данных. Например, вот так выглядит информация по одному из чатов в мобильном приложении Talk-Me:

sessionStorage и localStorage

Карточка пользователя по одному из чатов

sessionStorage vs localStorage vs cookies

Нагляднее всего продемонстрировать отличия между sessionStorage, localStorage и cookies с помощью таблицы:

sessionStorage и localStorage

Отличие cookies от sessionStorage и localStorage

  • Размер: куки ограничены 4 Кбайт, sesionStorage — 5 МБайт, а localStorage — от 5 до 10 Мбайт;
  • Поддержка браузера: cookies были еще в стандарте HTML4, в то время как sessionStorage и localStorage появились в HTML5;
  • Отправка при запросе: можно передать куки при отправке запроса, а sessionStorage и localStorage нет;
  • Срок жизни: для файлов cookie мы можем задать период жизни, данные в sessionStorage удаляются после закрытия вкладки браузера, а в localStorage они не удаляются «никогда»;
  • Место хранения: куки хранятся и в браузере, и на сервере, а sessionStorage и localStorage только локально в браузере пользователя;
  • Доступность: данные о пользователе в cookies и localStorage доступны из любого окна, при условии, что вы осуществляется заход под теми же данными (например, авторизуетесь на сайте), в то время как sessionStorage работает только из того же окна, а изменение вкладки браузера приведет к удалению информации.

Помимо этого, согласно правилам обработки персональных данных, установленных Генеральным регламентом ЕС о защите персональных данных (или GDPR — General Data Protection Regulation), владелец сайта должен получать разрешение от пользователей на использование файлов cookie. Для локального хранилища этого не требуется.

Как вы уже знаете, сейчас в части браузеров используется технология «умной защиты от слежения», которая предоставляет отчеты о заблокированных трекерах (в том числе и счетчиках веб-аналитики), тем самым препятствуется слежение за пользователями и показ им персонализированной рекламы с помощью файлов cookie. Хоть мы и можем устанавливать срок жизни куки, их время все равно зависит от настроек самих браузеров.

Например, система интеллектуального отслеживания (Intelligent Tracking Prevention, ITP 2.2) Apple ограничивает в Safari использование основных файлов cookie (first-party) до 1 дня. В результате файлы cookie, установленные рекламными сервисами, например, Facebook, Google или Яндексом, для измерения трафика сайта и атрибуции рекламы, будут удалены через 24 часа. И если человек нажимает на рекламное объявление в пятницу, а затем решает отложить покупку в выходные, то в понедельник у нас уже не будет cookie, чтобы показать ему рекламу и напомнить о приобретении. Остается только надеется на то, что человек запомнил наш сайт и вернется сам.

Чтобы отслеживать пользователей больше этого времени, можно использовать localStorage. Но и тут разочарование относительно пользователей Safari. В последних обновлениях разработчики добавили ограничение в 7 дней, то есть срок жизни данных в локальном хранилище теперь ограничен. Когда пользователь просматривает сайт через Safari, счетчик становится равен 7 дням.

В течение этого времени он должен повторно вернуться на сайт, чтобы мы смогли использовать информацию из локального хранилища. В противном случае данные по истечении этого времени будут удалены из localStorage.

Так или иначе, sessionStorage и localStorage активно используются разработчиками при разработке веб-приложений, а интернет-маркетологами как альтернатива файлам cookie. В блоге Симо Ахавы (Simo Ahava) есть статья, которая посвящена хранению Client ID в localStorage для Google Analytics.

Методы и свойства

Объекты хранилища sessionStorage и localStorage предоставляют одинаковые методы и свойства:

  • setItem(key, value) – сохранить пару ключ/значение;
  • getItem(key) – получить данные по ключу key;
  • removeItem(key) – удалить данные с ключом key;
  • clear() – удалить все;
  • key(index) – получить ключ на заданной позиции;
  • length – количество элементов в хранилище.

Запись данных в хранилище

Функция setItem(key, value) принимает ключ в качестве первого аргумента и значение в качестве второго аргумента. Как упоминалось ранее, все данные должны быть строками. Примеры установки:

Источник: osipenkov.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru