子域的HTML5 localStorage大小限制

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

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

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

它还提到:

用户代理应当防止在其他联属站点的原始位置存储数据的站点,例如存储在a1.example.com,a2.example.com,a3.example.com等的限制中,规避主example.com存储限制。

这里有一个非常详细的testing结果,包括大量的桌面和移动浏览器: http : //dev-test.nemikor.com/web-storage/support-test/

这证实了这个错误报告: http : //code.google.com/p/chromium/issues/detail?id=58985#c15

根据您可以存储的string长度,您只能依靠2.5MB而不是5MB。

我错过了这个问题,当我问:“ W3C Web Storage的实际限制是5MB吗? ”,但是我得到了基本相同的答案。 如果你需要更多的信息,我没有链接到一些浏览器的具体限制在我的问题。

更好的解决scheme是使用[HTML5 IndexedDB进行离线存储

它看起来像旧的Web SQL的替代(这似乎是错误的B / C它是脱机存储)是:索引数据库,它允许离线存储,仍然支持:

IndexedDB是HTML5中的新function。 Web数据库托pipe并保存在用户的浏览器内。 通过允许开发人员创build具有丰富查询能力的应用程序,可以预见将出现一种新的Web应用程序,可以在线和离线工作。

更多信息和testing应用程序 : http : //ido-green.appspot.com/WebSQL-IndexedDB-example/jqm_indexedDB.html

要获得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){ok=e,ov=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