HTML5 オフライン ストレージの管理

HTML5 には、大量のデータをユーザーのローカル環境に保存するためのストレージ API が数多く導入されています。 できます。ただし、各アプリに割り当てられるスペースは、デフォルトでは数個に限られています MB です。Google Chrome では、以前の上限を超える保存容量をリクエストできます 5 MB。

このドキュメントでは、Chrome と Google Workspace で使用されるストレージのタイプに関する では、保存容量を管理できる試験運用版の Quota Management API について説明します。「 このドキュメントは、クライアント側ストレージと Cloud Storage の一般的なコンセプトについて オフライン API の使い方を学ぶことができます。

目次

  1. ストレージの種類 <ph type="x-smartling-placeholder">
      </ph>
    1. 一時的
    2. 永続
    3. 無制限
    4. ストレージ タイプの比較
  2. 割り当ての管理 <ph type="x-smartling-placeholder">
      </ph>
    1. ストレージの使用量と可用性をクエリする
    2. 保存容量の追加を依頼する
    3. テストの割り当てをリセットする
  3. API リファレンス <ph type="x-smartling-placeholder">
      </ph>
    1. 定数
    2. メソッドの概要
    3. メソッド
  4. 今後の展開

ストレージの種類

Google Chrome では、次の 3 種類のストレージをリクエストできます。

以降のセクションでは、これらのストレージ タイプについて詳しく説明します。また、それぞれのストレージ タイプを比較 下記のをご覧ください。

一時ストレージ

一時ストレージは、すべてのウェブアプリで利用できる一時的なストレージです。Chrome は アプリの一時ストレージに割り当てられるため、割り当てをリクエストする必要はありません。

プールの共有

一時ストレージは、ブラウザで実行されているすべてのウェブアプリで共有されます。 共有プールは、使用可能なディスク容量の 1/3 まで使用できます。アプリですでに使用されているストレージは 共有プールの計算に含まれるつまり、計算に使用されるのは (available storage space + storage being used by apps) * .333

各アプリには最大 20% の共有プールを割り当てることができます。たとえば、使用可能な合計ディスク容量が 60 GB、共有プールは 20 GB、アプリは最大 4 GB です。これは 20%(最大で 4 GB)のうち、使用可能なディスク容量(60 GB)の 1/3(最大 20 GB)が必要。

追加容量のリクエスト

ただし、アプリで利用できるストレージの容量を照会することは可能です。 追加の一時的なストレージ スペースを要求することはできません。アプリが 超過すると、エラーがスローされます。

保存容量が不足しています

プール全体の保存容量割り当てを超過すると、データ使用量が最も少ない期間に 削除されます。ただし、ブラウザで LocalStorage のデータは消去されず、 SessionStorage。その他のオフライン API に保存されたデータについては、ブラウザによって削除され、削除はされません。 予期せぬ方法でアプリデータが破損するのを防いでいます。

各アプリのストレージ プールは最大 20% に制限されているため、削除が行われるのは、 5 個を超えるオフライン アプリがアクティブに実行されており、それぞれが最大ストレージを使用しています。

ただし、ユーザーがハードドライブにファイルを追加すると、利用可能な保存容量が減少する場合があります。Google 使用可能なディスク容量が少なくなる(共有プールが取得できるのは、現在使用可能な容量の半分のみ 最も長い間使用されていないホストに保存されているデータがすべて削除されます。

永続ストレージ

永続ストレージは、ユーザーが消去しない限りブラウザに残るストレージです。こちらは File System API を使用するアプリのみが対象だが、最終的には他のオフライン API でも使用可能になる予定 (IndexedDB や Application Cache など)。

アプリケーションでは、永続ストレージの割り当てが一時ストレージよりも多くなることがありますが、その場合は 割り当てます。さらに、割り当てられている追加容量を使用する権限をユーザーから 選択します。ローカルの保存容量を追加するようユーザーに求める情報バーが表示されます。

無制限ストレージ

無制限ストレージは永続ストレージに似ていますが、Chrome アプリと 拡張子(.crx ファイル)。無制限ストレージのサイズは空き容量によってのみ制限されます ハードドライブに保存されているデータです。unlimitedStorage 権限をリクエストするには、マニフェスト ファイルで アプリまたは拡張機能。インストール時に、Terraform で必要な権限がユーザーに通知されます。 クリックします。インストールを続行することで、ユーザーは暗黙的に次の権限を与えます。 manifest.json ファイルに URL がリストされているすべてのページを返します。

詳しくは、アプリ拡張機能それぞれのデベロッパー ガイドをご覧ください。

ストレージ タイプの比較

次の表に、3 種類のストレージの違いを示します。

 一時ストレージ永続ストレージ無制限ストレージ
基本的な説明

すべてのウェブアプリで使用できる一時的なストレージ。

これは自動的に行われるため、リクエストする必要はありません。

永続ストレージ。Quota Management API を使用してリクエストし、ユーザーが付与する必要があります。

Chrome 拡張機能とアプリ用の永続ストレージ。

これはマニフェスト ファイルで設定され、ユーザーが付与する必要があります。

利用可能な国と地域

すべてのウェブアプリ。

すべてのウェブアプリ。Chrome 拡張機能、ホストされインストールされているウェブアプリに固有です。
権限なし。明示的にリクエストしなくても使用できます。

Quota Management API を使用して追加のストレージをリクエストする必要があります。

unlimitedStorage 権限は、アプリまたは拡張機能のマニフェスト ファイルでリクエストできます。
初回使用時のユーザー エクスペリエンスユーザーには表示されません。アプリはそのまま実行されます。

Chrome に情報バーが表示され、ユーザーに保存容量のリクエストを承認または拒否するよう求めるメッセージが表示されます。

ただし、リクエストした割り当ての量がアプリの現在の割り当てより少ない場合、プロンプトは表示されません。大きい割り当てが維持されます。

インストール時に、アプリや拡張機能に必要な権限がユーザーに通知されます。インストールを続行すると、アプリまたは拡張機能の manifest.json ファイルに URL が記載されているすべてのページに対して、権限が暗黙的に付与されます。

後続のストレージ増量リクエスト時のユーザー エクスペリエンス適用外。追加の一時ストレージをリクエストすることはできません。

Chrome からユーザーに再度確認メッセージが表示されます。

 

Chrome では、アプリや拡張機能が割り当ての増加をリクエストしても、インストール後にユーザーにメッセージは表示されません。
データの永続性

一時的なものです。ブラウザでデータを削除できます。

永続的。ユーザーが指示しない限り、ブラウザはデータを削除しません。データは後続のアクセスで使用できます。

ユーザーがデータを削除できるため、データが永続的であると想定しないでください。

永続ストレージと同じ。

 

デフォルトの保存先

共有プールの最大 20%。

0 MB。保存容量を明示的にリクエストする必要がある。

0 MB。マニフェスト ファイルで unlimitedStorage を明示的に要求する必要があります。

ストレージ要件を指定しない場合、Chrome は一時ストレージの共有プールからアプリにストレージを割り当てます。

最大保存容量共有プールの最大 20%。ハードドライブの空きスペースと同じ大きさ。固定のストレージ プールはありません。ハードドライブの空きスペースと同じ大きさ。
おすすめの使用例キャッシュ保存。オフラインで動作するアプリ、またはアセットが多数あるアプリ。Google Chrome で動作するように設計されたアプリ。
それを使用できる API

オフライン API

  • アプリのキャッシュ
  • ファイル システム
  • IndexedDB
  • WebSQL(2010 年 11 月 18 日より非推奨になりました)

注: LocalStorage や SessionStorage などのウェブ ストレージ API は 5 MB に固定されています。

ファイル システム API

オフライン API

  • アプリのキャッシュ
  • ファイル システム
  • IndexedDB
  • WebSQL(非推奨)

注: LocalStorage や SessionStorage などのウェブ ストレージ API は 5 MB に固定されています。

割り当ての管理

Chrome 13 で導入された Quota Management API を使用すると、次のことができます。

API は、グローバル オブジェクト window.webkitStorageInfo を使用して実装されます。

リファレンス ドキュメントについては、次のセクションをご覧ください。

ストレージの使用量と可用性のクエリ

使用中のストレージ サイズとホストの空き容量をクエリするには、次の呼び出しを呼び出します。 queryUsageAndQuota() は、次のように置き換えます。

  • 確認するストレージのタイプ
  • 成功のコールバック

API によってレポートされる使用量は、ユーザーデータの実際のサイズと一致しない場合があります。これは、各ストレージ メタデータを保存するために余分なバイトが必要になる場合があります。また、ステータスの更新が遅れることがあり、 API に最新のストレージ ステータスが反映されていません。

次のコード スニペットは、保存容量について質問する方法を示しています。

// Request storage usage and capacity left
// Choose either Temporary or Persistent
navigator.webkitTemporaryStorage.queryUsageAndQuota (
    function(usedBytes, grantedBytes) {
        console.log('we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
    },
    function(e) { console.log('Error', e);  }
);

永続ストレージのステータスを確認するには、 webkitStorageInfo.TEMPORARYwebkitStorageInfo.PERSISTENT に置き換えます。この列挙型は window オブジェクト(グローバル名前空間)であるため、window.PERSISTENTwindow.TEMPORARY

追加の保存容量を要求している

一時的なストレージの追加を依頼する必要はありません。割り当ては自動的に行われ、 超えている場合もあります(をご覧ください)。

File System API の永続ストレージの場合、デフォルトの割り当ては 0 であるため、明示的に アプリケーション用の リクエストストレージです次のように requestQuota() を呼び出します。

  • ストレージのタイプ
  • サイズ
  • 成功のコールバック

リクエストの内容に応じて、次の処理が行われます。

  • 割り当ての増加をリクエストすると、ブラウザはユーザーに情報バーを表示し、 割り当てを増やすための権限を付与するか拒否するかを選べます。ただし、リクエストが通知なく送信されることがあります。 現在の割り当て以下の割り当てが返されます。
  • リクエストした割り当ての量がアプリの現在の割り当てより少ない場合、プロンプトは表示されません。
  • 許可された上限を超える保存容量をリクエストすると、エラー(QUOTA_EXCEEDED_ERR)が表示されます。
  • ユーザーがすでに権限を付与した後で requestQuota() を再度呼び出しても、何も起こりません。 そのため、このメソッドを再度呼び出す必要はありません。

保存容量の追加をリクエストする方法は、次のとおりです。

// Request Quota (only for File System API)
var requestedBytes = 1024*1024*10; // 10MB

navigator.webkitPersistentStorage.requestQuota (
    requestedBytes, function(grantedBytes) {
        window.requestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);

    }, function(e) { console.log('Error', e); }
);
});

テストの割り当てをリセットする

アプリでストレージをテストする場合は、保存データを削除して、以下のことができるようにすることをおすすめします。 アプリで割り当て管理を新たにテストします。手順は次のとおりです。

  1. アドレスバーに「chrome://settings/cookies」と入力します。
  2. 自分のアプリを探します。
  3. アプリを選択
  4. ハイライト表示された選択項目の右側にある [X] をクリックします。

API リファレンス

このセクションでは、Quota Management API のメソッドについて説明します。

定数

以下は、ストレージのタイプを示す webkitStorageInfo 定数です。

定数説明
TEMPORARY0一時ストレージ。
PERSISTENT1永続ストレージ。

メソッドの概要

queryUsageAndQuota
requestQuota

メソッド

queryUsageAndQuota

使用中のストレージ サイズとホストの空き容量を確認します。

 // you could also use it from webkitPersistentStorage
navigator.webkitTemporaryStorage.queryUsageAndQuota(
      successCallback,
      errorCallback);
  • successCallback: 次の 2 つのパラメータを持つオプションのコールバック。

    • アプリが現在使用しているバイト数。
    • 割り当ての残りのバイト数。
  • errorCallback: 省略可能なエラー コールバック。

requestQuota

追加の保存容量をリクエストする。ブラウザには情報バーが表示され、ユーザーにアプリの許可または拒否を求める 権限を許可していません

 // you could also use it from webkitTemporaryStorage
navigator.webkitPersistentStorage.requestQuota (
      newQuotaInBytes,
      quotaCallback,
      errorCallback);
パラメータ
  • newQuotaInBytes: 保存容量に必要なバイト数。
  • successCallback: 付与されたバイト数を渡すオプションのコールバック。
  • errorCallback: 省略可能なエラー コールバック。

今後の展開

計画では、IndexedDB、Application Cache、File などの HTML5 オフライン ストレージ API をすべて使用する予定です。 システム API、および割り当てで指定された他の API Management API です。すべてのストレージ割り当てを管理できるようになります。