Ограничение размера HTML5 localStorage для поддоменов - PullRequest
76 голосов
/ 30 апреля 2010

Базы данных HTML5 localStorage обычно имеют ограниченный размер - стандартные размеры составляют 5 или 10 МБ на домен. Можно ли обойти эти ограничения с помощью поддоменов (например, example.com, hack1.example.com и hack2.example.com имеют собственные базы данных по 5 МБ)? И есть ли в стандарте что-либо, что определяет, могут ли родительские домены получать доступ к базам данных своих детей? Я ничего не могу найти и вижу аргументы для того, чтобы сделать это в любом случае, но похоже, что должна быть какая-то стандартная модель.

Ответы [ 5 ]

53 голосов
/ 03 мая 2010

С http://dev.w3.org/html5/webstorage/#disk-space

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

Также упоминается, что:

Пользовательские агенты должны защищать от сайтов, хранящих данные под источниками другие аффилированные сайты, например хранение до предела в a1.example.com, a2.example.com, a3.example.com и т. д., обходя основное ограничение на example.com.

14 голосов
/ 17 января 2012

Вот довольно подробный результат теста с множеством настольных и мобильных браузеров: http://dev -test.nemikor.com / web-storage / support-test /

Что подтверждает этот отчет об ошибке: http://code.google.com/p/chromium/issues/detail?id=58985#c15

Можно полагаться только на 2,5 МБ, а не на 5 МБ, в зависимости от длины строки, которую вы можете сохранить.

9 голосов
/ 27 августа 2010

Я пропустил этот вопрос, когда спросил " Является ли 5 ​​МБ фактическим пределом для W3C Web Storage? ", но я получил в основном тот же ответ. Если вам нужна дополнительная информация, я указал ссылку на некоторые ограничения браузера в своем вопросе.

6 голосов
/ 23 мая 2012

Лучшим решением является использование [HTML5 IndexedDB для автономного хранения.] 1

Похоже, что замена старого Web SQL (который, похоже, неправильно назван б / к, он предназначен для офлайн хранилища): Индексированная БД, которая допускает автономное хранение и по-прежнему поддерживается:

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

Дополнительная информация и тестовое приложение по адресу: http://ido -green.appspot.com / WebSQL-IndexedDB-пример / jqm_indexedDB.html * +1021 *

2 голосов
/ 27 мая 2016

Чтобы получить 50 МБ дискового пространства, используйте код ниже

// 1. paste this line in your code
!function(){function e(t,o){return n?void(n.transaction("s").objectStore("s").get(t).onsuccess=function(e){var t=e.target.result&&e.target.result.v||null;o(t)}):void setTimeout(function(){e(t,o)},100)}var t=window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB;if(!t)return void console.error("indexDB not supported");var n,o={k:"",v:""},r=t.open("d2",1);r.onsuccess=function(e){n=this.result},r.onerror=function(e){console.error("indexedDB request error"),console.log(e)},r.onupgradeneeded=function(e){n=null;var t=e.target.result.createObjectStore("s",{keyPath:"k"});t.transaction.oncomplete=function(e){n=e.target.db}},window.ldb={get:e,set:function(e,t){o.k=e,o.v=t,n.transaction("s","readwrite").objectStore("s").put(o)}}}();

// 2. Setting values
ldb.set('nameGoesHere', 'value goes here');

// 3. Getting values - callback is required because the data is being retrieved asynchronously:
ldb.get('nameGoesHere', function (value) {
  console.log('And the value is', value);
});

источник https://github.com/DVLP/localStorageDB

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