web-dev-qa-db-ja.com

サブドメインのHTML5 localStorageサイズ制限

HTML5のlocalStorageデータベースは通常、サイズが制限されています。標準サイズはドメインごとに5または10 MBです。これらの制限はサブドメインによって回避できますか(例:example.com、hack1.example.com、hack2.example.comはすべて独自の5 MBデータベースを持っています)?また、親ドメインが子のデータベースにアクセスできるかどうかを指定する規格には何かありますか?私は何も見つけることができず、どちらの方法でもそれを行うための議論を見ることができますが、何らかの標準モデルが必要なようです。

76
Chuck

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

Originごとに5メガバイトのほとんど任意の制限が推奨されます。実装のフィードバックは歓迎されており、今後この提案を更新するために使用されます。

それにも言及しています:

ユーザーエージェントは、他の関連サイト、たとえばa1.example.com、a2.example.com、a3.example.comなどの制限まで保存し、メインのexample.comの保存制限を回避します。

53
Vetle

以下は、多くのデスクトップおよびモバイルブラウザをカバーした非常に詳細なテスト結果です。 http://dev-test.nemikor.com/web-storage/support-test/

このバグレポートを確認するもの: http://code.google.com/p/chromium/issues/detail?id=58985#c15

格納できる文字列の長さに基づいて、5MBではなく2.5MBのみに依存できます。

14
Jörn Zaefferer

5MBはW3C Web Storageの事実上の制限ですか? 」と尋ねたときにこの質問を見逃しましたが、基本的に同じ答えが得られました。さらに情報が必要な場合は、質問でブラウザー固有の制限にリンクしました。

9
Kevin Hakanson

より良い解決策は、[HTML5 IndexedDBをオフラインストレージに使用することです。]1

古いWeb SQL(b/cはofflineストレージの名前の誤りと思われる)の置き換えは次のようになります:オフラインストレージを許可し、引き続きサポートされているインデックス付きDB

IndexedDBはHTML5の新機能です。 Webデータベースは、ユーザーのブラウザー内でホストおよび保持されます。開発者が豊富なクエリ機能を備えたアプリケーションを作成できるようにすることで、オンラインおよびoff-lineで機能する新しい種類のWebアプリケーションが登場することが想定されています。 )。

詳細と test-app at: http://ido-green.appspot.com/WebSQL-IndexedDB-example/jqm_indexedDB.html

6
Clay Nichols

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

2
Pawel