Насколько постоянен localStorage?


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

с спецификации:

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

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

5 82

5 ответов:

Mozilla реализует его как cookies:

хранение DOM может быть очищено с помощью "Tools - > Clear Recent History - > Cookies", когда диапазон времени " все " (через nsICookieManager:: removeAll)

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

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

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

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

LocalStorage не является безопасным хранилищем

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

настойчивость

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

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


Что касается "замены печенья",не совсем

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

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

локальное хранилище, наряду с хранилищем сеансов, стремится быть заменой куки, определяя более последовательный API. Есть несколько отличий от cookies:

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

Так да ваше предположение верно.

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

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

с Декабря 2011 Года Веб-Хранилище Спецификации Кандидата, Рекомендация,

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

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

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