Поскольку localStorage
(в настоящее время) поддерживает только строки в качестве значений, и для этого объекты должны быть преобразованы в строку (сохранены как JSON-строки), прежде чем они могут быть сохранены, существует определенное ограничение относительно длины значений.
Кто-нибудь знает, есть ли определение, которое применяется ко всем браузерам?
javascript
html
local-storage
Codekie
источник
источник
Ответы:
Цитата из статьи Википедии о веб-хранилище :
А также цитата из статьи Джона Ресига [опубликовано в январе 2007 года]:
источник
domain
(origin
) может хранить 5 МБ на любом отдельном клиенте. Данные хранятся на клиентском компьютере -localStorage
механизм никак не взаимодействует между клиентами.http://example.com
иhttps://example.com
не одного происхождения (разные схемы).http://example.com
иhttp://www.example.com
не одного происхождения (разные хосты).http://example.com
иhttp://example.com:8080
не одного происхождения (разные порты). НТН. :-)На самом деле Opera не имеет ограничения в 5 МБ. Предлагает увеличить лимит, поскольку приложения требуют большего. Пользователь может даже выбрать «Неограниченное хранилище» для домена.
Вы можете легко проверить ограничения / квоту localStorage самостоятельно.
источник
UCS-2
. Хотя это похоже наUFT16
некоторые очень важные отличия ... в основном вращаются вокруг факта, что UCS-2 предшествует UFT.Вот простой скрипт для определения предела:
Вот суть , JSFiddle и сообщение в блоге .
Скрипт будет проверять установку строк текста все большего размера, пока браузер не выдаст исключение. В этот момент он очистит тестовые данные и установит ключ размера в localStorage, сохраняя размер в килобайтах.
источник
Найдите максимальную длину одной строки, которая может быть сохранена в
localStorage
Этот фрагмент найдет максимальную длину строки, которую можно сохранить в
localStorage
каждом домене.Обратите внимание, что длина строки ограничена в JavaScript; Если вы хотите просмотреть максимальный объем данных, которые могут быть сохранены,
localStorage
если не ограничены одной строкой, вы можете использовать код в этом ответе .Редактировать: фрагменты стека не поддерживают
localStorage
, так что вот ссылка на JSFiddle .Результаты
Chrome (45.0.2454.101): 5242878 символов.
Firefox (40.0.1): 5242883 символа.
Internet Explorer (11.0.9600.18036) :
16386122066122070 знаковЯ получаю разные результаты при каждом запуске в Internet Explorer.
источник
Мобильные браузеры:
Настольные браузеры:
Ссылка Ссылка
источник
Не думайте, что доступно 5 МБ - емкость localStorage варьируется в зависимости от браузера: 2,5 МБ, 5 МБ и неограниченное количество являются наиболее распространенными значениями. Источник: http://dev-test.nemikor.com/web-storage/support-test/
источник
Вы не хотите объединять большие объекты в одну запись localStorage. Это было бы очень неэффективно - все это нужно было бы анализировать и перекодировать каждый раз, когда вносятся небольшие изменения в детали. Кроме того, JSON не может обрабатывать несколько перекрестных ссылок в структуре объекта и стирает много деталей, например, конструктор, нечисловые свойства массивов, то, что находится в разреженной записи, и т. Д.
Вместо этого вы можете использовать Rhaboo . Он хранит большие объекты, используя множество записей localStorage, поэтому вы можете быстро вносить небольшие изменения. Восстановленные объекты являются гораздо более точными копиями сохраненных, а API невероятно прост. Например:
Кстати, я написал это.
источник
Я делаю следующее:
источник
Мне очень нравится ответ cdmckay , но не очень хорошо проверять размер в реальном времени: он слишком медленный (2 секунды для меня). Это улучшенная версия, которая намного быстрее и точнее, а также с возможностью выбора размера ошибки (по умолчанию
250,000
, чем меньше ошибка, тем дольше вычисление):Тестировать:
Это работает значительно быстрее для стандартной ошибки; также это может быть намного точнее, когда это необходимо.
источник
Я сжал бинарный тест в этой функции, которую я использую:
Он также создает резервную копию содержимого перед тестированием, а затем восстанавливает их.
Как это работает: он удваивает размер до тех пор, пока не будет достигнут предел или тест не пройден. Затем он сохраняет половину расстояния между минимумом и максимумом и вычитает / добавляет половину половины каждый раз (вычитает при неудаче и добавляет при успехе); оттачивая в правильное значение.
upperLimit
по умолчанию равен 1 ГБ и ограничивает экспоненциальную скорость сканирования до начала двоичного поиска. Я сомневаюсь, что это даже нужно будет изменить, но я всегда думаю о будущем. ;)На Chrome:
IE11, Edge и FireFox также сообщают одинаковый максимальный размер (10485762 байт).
источник
localStorage.Clear()
до и после тестированияВы можете использовать следующий код в современных браузерах для эффективной проверки квоты хранилища (всего и использованного) в режиме реального времени:
источник
Usage (in Bytes): 647 , Total Quota (in Bytes): 32901464711
Это неправильно: общий возможный размер на самом деле 10485762.Однажды я разработал расширение Chrome (настольный браузер) и по этой причине протестировал реальный максимальный размер локального хранилища .
Мои результаты:
Больше чем
10240 KB
использование вернуло мне ошибку:источник
Я написал этот простой код, который проверяет размер localStorage в байтах.
https://github.com/gkucmierz/Test-of-localStorage-limits-quota
Github страницы:
https://gkucmierz.github.io/Test-of-localStorage-limits-quota/
У меня такие же результаты на настольном Chrome, Opera, Firefox, Brave и Mobile Chrome, который ~ 5Mbytes
И наполовину меньший результат в сафари ~ 2Mbytes
источник