Подтвердить что ты не робот

Что происходит, когда localStorage заполнен?

Я нашел статьи относительно поведения кэша, поэтому могу только предположить, что он не сильно отличается, но я хотел убедиться.

Я прочитал, что у большинства браузеров есть 5MB (дайте или возьмите) для localStorage, и я был заинтересован в том, что будет поведением браузеров?

Я понимаю, что каждый браузер действует раздельно, но меня интересуют в основном Safari, Chrome и Firefox (как те, которые я рассматриваю как браузеры).

  • Будут ли упомянутые выше браузеры удалять данные с моего сайта или выберет "самый старый" или что-то в этом роде?
  • Будет ли сохранен мой элемент в таком случае?

И самое главное:

  • Давайте скажем, что я "злоупотребляю" localStorage и мой сайт, пытаясь использовать все это, и на той же странице я заполняю его и пытаюсь сэкономить больше, получит ли я предупреждение И будет ли getItem возвращать null, когда это произойдет или оно каким-то образом будет сохранено в памяти?

  • Что произойдет, если я попытаюсь сохранить элемент больше размера localStorage?

    Ответ: ответ можно найти здесь

  • Можно ли ожидать такого же точного поведения от sessionStorage, которое должно быть одно и то же?

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

С уважением.

4b9b3361

Ответ 1

Во-первых, некоторые полезные ресурсы:

В ответ на ваш вопрос настольные браузеры обычно имеют начальную максимальную квоту localStorage по 5 МБ на домен. В некоторых случаях это может быть настроено пользователем:

  • Опера: opera: config → Квота домена Для localStorage
  • Firefox: about: config → dom.storage.default_quota​​li >

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

При попытке сохранить данные в localStorage браузер проверяет наличие достаточного количества оставшегося пространства для текущего домена. Если да:

  • Данные сохраняются, переписывая значения, если идентичный ключ уже существует.

Если нет:

  • Данные не сохраняются, а существующие данные не перезаписываются.
  • Выдается исключение QUOTA_EXCEEDED_ERR.

В этом случае getItem(key) вернет последнее значение, которое было успешно сохранено, если оно есть.

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

Обратите внимание, что sessionStorage и localStorage являются реализациями одного и того же объекта хранения, поэтому их поведение аналогично, и обработка ошибок одинакова.