HTML5的localStorage數據庫通常受到大小限制 - 標準大小爲每個域5或10 MB。這些限制是否可以通過子域來規避(例如,example.com,hack1.example.com和hack2.example.com都有自己的5 MB數據庫)?標準中是否有指定父域是否可以訪問其子數據庫的內容?我找不到任何東西,我可以通過任何方式看到有關這樣做的論點,但似乎必須有一些標準模型。子域的HTML5 localStorage大小限制
回答
從http://dev.w3.org/html5/webstorage/#disk-space建議
A的每產地爲5 MB大多任何限制。實施反饋是受歡迎的,並將在未來用於更新此建議。
它還提到:
用戶代理應警惕網站起源下存儲數據 其他聯屬網站,例如存儲最多 a1.example.com,a2.example.com,a3.example.com等的限制,規避主要example.com存儲限制 。
這並沒有真正回答有關子域的問題。 –
@JörnZaefferer,規範的* intent *是爲了防止使用子域名。 –
有趣的是,儘管規範中有警告,但顯然只有FireFox實施了建議的預防措施。看到這個項目有一個有趣的方式來填補你的磁盤/崩潰你的瀏覽器:http://feross.org/fill-disk/ –
我錯過了這個問題,當我問「Is 5MB the de facto limit for W3C Web Storage?」,但我得到了基本相同的答案。如果你需要更多的信息,我在我的問題中確實鏈接了一些瀏覽器特定的限制。
下面是用大量的桌面和移動瀏覽器一個非常詳細的測試結果涵蓋:http://dev-test.nemikor.com/web-storage/support-test/
這證實了這個錯誤報告:http://code.google.com/p/chromium/issues/detail?id=58985#c15
你可以依靠只有2.5MB,不5MB,基於字符串你可以存儲的長度。
偉大的文檔!謝謝! – neoswf
更好的解決方案是使用[HTML5索引的離線存儲。]1
它看起來像更換舊的Web SQL(這似乎是名不副實的B/C它是離線存儲)是:索引數據庫,允許離線存儲並且仍支持:
IndexedDB是HTML5中的新增功能。 Web數據庫在用戶的瀏覽器內託管並持久保留 。通過允許開發人員創建具有豐富查詢能力的應用程序 ,可以預見將會出現一種新的應用程序,可以在線工作,並且可以離線工作 。
更多信息和test-app在: http://ido-green.appspot.com/WebSQL-IndexedDB-example/jqm_indexedDB.html
目前在移動設備上沒有IndexedDB支持(可能即將在iOS 7中提供)。所以最好創建一個包裝WebSQL和IndexedDB的持久API,直到移動設備支持更好的IndexedDB http://caniuse.com/#search=indexeddb – oligofren
這應該是一個評論,因爲它沒有回答這個問題。 –
我實際上認爲它可能會爲提出最初問題的人提供最好的建議。另外,還有一個體面的polyfill庫,它爲舊版移動瀏覽器在WebSQL之上實現了indexedDB。 –
要獲得的存儲空間使用代碼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);
});
- 1. 如何解決localStorage的大小限制
- 2. localStorage大小限制...有哪些選項?
- 3. Cordova應用程序中LocalStorage/IndexedDb的最大大小限制
- 4. iPad上的HTML5 localStorage空間限制Safari
- 5. HTML5 Manifest是否有大小限制?
- 6. 增加一個域名的localStorage大小?
- 7. 如何從根域訪問子域的html5 localStorage?
- 8. 限制:子域
- 9. 如何限制文本區域大小?
- 10. LocalStorage限制
- 11. HTML5 localStorage的最大大小是否包含鍵名?
- 12. LDAP限制大小限制
- 13. 子域名localStorage的範圍
- 14. 子窗口有限制調整大小
- 15. 塊大小的大小限制
- 16. HTML5 localStorage
- 17. 限制流大小
- 18. XTS大小限制
- 19. UIWebview大小限制
- 20. 限制JSpinner大小
- 21. Imshow()大小限制
- 22. XMLHTTPRequest大小限制
- 23. fprintf大小限制
- 24. 限制iframe大小
- 25. 限制HTML5的大小Facebook的評論框
- 26. hclust大小限制?
- 27. 限制UITableView大小
- 28. innerHTML大小限制
- 29. iphone startMonitoringRegion monitoredRegions大小限制
- 30. htaccess的限制子域
我的工作,現在有一個程序,我們正在嘗試將所有文本完全存儲在localStorage中。如果您可以添加一些鏈接到您找到有關當前5MB限制的信息,那將會非常棒。這會幫助我更好地理解替代方案。謝謝 – JeroenEijkhof
基於Webkit的瀏覽器使用UTF-16進行存儲,限制爲2.5MB。 – rxgx
請注意,2011年6月的RFC規定:「用戶代理應防止在其他聯屬站點的原始位置存儲數據的站點,例如存儲在a1.example.com,a2.example.com,a3.example.com,繞過主要的example.com存儲限制。「所以不要指望這種黑客將來繼續工作。 (http://dev.w3.org/html5/webstorage/) –