子域的HTML5 localStorage大小限制

时间:2010-04-30 19:55:19

标签: html5 subdomain limit local-storage

HTML5的localStorage数据库通常是大小限制的 - 每个域的标准大小为5或10 MB。子域可以规避这些限制(例如example.com,hack1.example.com和hack2.example.com都有自己的5 MB数据库)?标准中是否有任何内容指定父域是否可以访问其子项的数据库?我找不到任何东西,我可以看到这样做的论据,但似乎必须有一些标准模型。

5 个答案:

答案 0 :(得分:53)

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

  

建议每个来源的任意限制为5兆字节。欢迎提供实施反馈,并将在未来用于更新此建议。

它还提到:

  

用户代理应该防范存储源的数据的站点   其他附属网站,例如存储到极限   a1.example.com,a2.example.com,a3.example.com等,绕过了   主要的example.com存储限制。

答案 1 :(得分:14)

这是一个非常详细的测试结果,涵盖了大量桌面和移动浏览器:http://dev-test.nemikor.com/web-storage/support-test/

确认此错误报告:http://code.google.com/p/chromium/issues/detail?id=58985#c15

根据您可以存储的字符串长度,您只能依赖2.5MB而不是5MB。

答案 2 :(得分:9)

当我问“Is 5MB the de facto limit for W3C Web Storage?”时,我错过了这个问题,但我的答案基本相同。如果您需要更多信息,我会在我的问题中链接到某些特定于浏览器的限制。

答案 3 :(得分:6)

更好的解决方案是使用[HTML5 IndexedDB进行离线存储。] 1

看起来旧的Web SQL(它似乎被错误命名为离线存储的b / c)的替代品是:索引数据库,它允许离线存储并且仍然支持:

  

IndexedDB是HTML5中的新功能。 Web数据库是托管和持久化的   在用户的浏览器中。允许开发人员创建应用程序   具有丰富的查询能力,可以设想一种新的网络   将出现具有在线工作能力的应用程序   的离线

更多信息和test-apphttp://ido-green.appspot.com/WebSQL-IndexedDB-example/jqm_indexedDB.html

答案 4 :(得分:2)

要获得50MB的存储空间,请使用以下代码

// 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