1. ホーム
  2. javascript

サービスワーカーのストレージの上限は?

2023-09-09 04:55:52

質問

ほとんどのブラウザは、ドメインごとに 5MB のストレージ制限を持つ localStorage を提供します。 サービス ワーカーに関してそのようなメモリ制限/制約がありますか?

ウェブ ワーカー(サービス ワーカーがベースとするもの)にはそのような制限がないことは知っています。しかし、Web Workers は正確にはアセット キャッシュに使用されるのではなく、処理に多く使用されます (したがって、そこでは CPU が主な関心事となります)。

メモリ サイズに制限がない場合、ひどいデザインの Web サイトがブラウザをクラッシュさせる可能性はありますか?

どのように解決するのですか?

2018年1月15日更新

ストレージマネージャ インターフェースは、ストレージ関連のすべてのAPIクエリの標準になりつつあります。このインターフェースは ミゲル・ラトゥアーダ によって言及されているように 見積もりAPI を使用すると、Web アプリが使用するストレージと利用可能なストレージの見積もりが提供されます。また QuotaExceededError 例外にも注目してください。これはエラーシナリオを処理するのに役立ちます。

コード

if ('storage' in navigator && 'estimate' in navigator.storage) {
  navigator.storage.estimate().then(({usage, quota}) => {
    console.log(`Using ${usage} out of ${quota} bytes.`);
  }).catch(error => {
    console.error('Loading storage estimate failed:');
    console.log(error.stack);
  });
} else {
  console.error('navigator.storage.estimate API unavailable.');
}

詳細は、以下の2つの記事を参照してください。


2017年3月16日(参考/歴史としてだけ残しておく)

最近、こんな記事に出会いました。 オフライン料理本 という記事で、以下のように書かれています。

あなたの オリジンには一定の自由空間が与えられている を与えられています。その は、すべてのオリジンストレージで共有されます。 : LocalStorage、IndexedDB、Filesystem、そしてもちろんCachesです。

は仕様ではありません。 端末や保存状態によって異なります。


取得量は仕様です。

navigator.storageQuota.queryInfo("temporary").then(function(info) {
   console.log(info.quota);
   // Result: <quota in bytes>
   console.log(info.usage);
   // Result: <used data in bytes>
});

上記のコード はすべてのブラウザで動作しないかもしれません . (例: chrome<48 では webkitPersistentStorage 等を探さなければならないかもしれません)

その他の有用な情報/リソース

  1. による Progressive Web Apps のオフラインストレージ by Addy Osmani

    Chrome and Opera : あなたのストレージはオリジンごと(APIごとではなく)です。どちらのストレージメカニズムも、ブラウザのクォータに達するまでデータを保存します。アプリは、Quota Management API (前述) を使用して、どれだけのクォータを使用しているかを確認できます。

    Firefox 制限なし。ただし、50MBのデータが保存されるとプロンプトが表示されます。

    Mobile Safari 最大50MB

    Desktop Safari 無制限(5MBを超えるとプロンプトが表示されます)

    IE10+ 最大250MBまで、10MBでプロンプトが表示されます。

  2. のより詳細なガイド モバイルブラウザでクォータを使用する 北村英治によるものです。

今のところ、これらは私の問題に最も関連する記事と解決策です。誰かがいくつかのより良い記事や仕様を知っている場合は、共有してください。