Насколько стойким является localStorage?

Я сильно вписываюсь в localStorage для плагина, который я пишу. Все пользовательские настройки хранятся в нем. Некоторые настройки требуют, чтобы пользователь писал regex'es, и им было бы грустно, если бы их правила регулярного выражения исчезли в какой-то момент. Итак, теперь я задаюсь вопросом, насколько устойчивым является localStorage.

Из спецификаций:

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

Вышеприведенное выглядит так же, как cookie на клиенте. То есть когда пользователь очищает все данные обозревателя (история, файлы cookie, кеш и т.д.), localStorage также будет усечен. Правильно ли это предположение?

Ответ 1

Mozilla реализует его как файлы cookie:

Хранилище DOM можно очистить с помощью "Tools → Clear Recent History → Cookies", когда диапазон времени "Все" (через nsICookieManager:: removeAll)

https://developer.mozilla.org/en/DOM/Storage

В хранилище DOM нельзя указать период истечения срока действия для любой из ваших данных. Все правила истечения срока действия остаются за пользователем. В случае с Mozilla большинство этих правил наследуются из правил истечения срока действия Cookie. Из-за этого вы, вероятно, можете ожидать, что большинство ваших данных DOM Storage прослужит, по крайней мере, в течение значительного времени.

http://ejohn.org/blog/dom-storage/

Chrome реализует его как кеш:

LocalStorage - это не безопасное хранилище

Локальное хранилище HTML5 сохраняет незашифрованные данные в строковой форме в кеше обычного браузера.

Постоянство

На диске до удаления пользователем (удалить кеш) или приложением

https://developers.google.com/web-toolkit/doc/latest/DevGuideHtml5Storage


Что касается "замены Cookie", не полностью

Cookies и локальное хранилище действительно служат разным. Файлы cookie в основном предназначены для чтения на стороне сервера, LocalStorage можно читать только на стороне клиента. Итак, вопрос в вашем приложении, кому нужны эти данные - клиент или сервер?

Ответ 2

В принципе, вы должны не сильно зависеть от локального хранилища.

Локальное хранилище вместе с Storage Storage предназначено для замены файлов cookie, определяющих более согласованный API. Есть несколько отличий от файлов cookie:

  • Пока файлы cookie доступны как с клиентской, так и с серверной стороны, Web Storage, в общем, и локальное хранилище, в частности, доступны только с клиентской стороны.
  • Усовершенствованная емкость (официальная для файлов cookie составляет 4 килобайта) до более 5 МБ на домен (Firefox, Google Chrome и Opera и 10 МБ в IE).

Итак да, ваше предположение верно.

Ответ 3

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

Ответ 4

Локальное хранилище предназначено для надежного, постоянного хранения данных на клиенте. Он не разработан как "лучший файл cookie": эта функция предназначена для работы с хранилищем сеансов.

Из декабрьская рекомендация кандидата на веб-хранилище в Интернете,

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

Как данные на стороне клиента - он так же устойчив, как и любые данные на стороне клиента, в пределах размера, которые реализует браузер. Пользователи могут удалять его в любое время, открывать его в текстовом редакторе и редактировать и т.д. - так же, как ЛЮБЫЕ данные на стороне клиента.

Ответ 5

Если вы используете localStorage для приложения iOS, будьте очень осторожны. Последняя версия iOS (5.1 от верхней части моей головы) переместила данные localstorage и localdb в часть кэша, который регулярно очищается, т.е. Совсем не устойчив. Я не могу сказать, если это ошибка или изменение политики.