Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

Page updated Apr 30, 2024

Maintenance ModeYou are viewing Amplify Gen 1 documentation. Amplify Gen 1 has entered maintenance mode and will reach end of life on May 1, 2027. New project should use Amplify Gen 2. For existing Gen 1 projects, a migration guide and tooling are available to help you upgrade. Switch to the latest Gen 2 docs →

キャッシュ

Amplify Cache モジュールは、優先度と有効期限の設定を使用してデータを保存するための汎用 LRU キャッシュを JavaScript 開発者に提供します。

これはキー/バリュー構造で、有効期限の値をグローバルにまたはキー単位で構成できます。たとえば、API モジュールからのすべての JSON レスポンスを次の 10 分間キャッシュしたい場合もあれば、ユーザー入力値または設定を 1 ヶ月間保存したい場合もあります。

インストール

aws-amplify をインストールします。

npm install aws-amplify

API の使用

まず、ライブラリをインポートします。

import { Cache } from 'aws-amplify/utils';

インポート後、アプリケーション内で適切なメソッドを呼び出すことができます。

setItem()

Cache.setItem(key, value, [options]);

キャッシュに_数値_、文字列ブール値配列、または_オブジェクト_の値を設定できます。呼び出しに沿ってオプション(優先度や有効期限など)を指定することもできます。

// 標準ケース
Cache.setItem('key', 'value');
// 優先度付きでアイテムを設定します。優先度は 1 ~ 5 の間である必要があります。
Cache.setItem('key', 'value', { priority: 3 });
// 有効期限付きでアイテムを設定
const expiration = new Date(2018, 1, 1);
Cache.setItem('key', 'value', { expires: expiration.getTime() });

priority 設定を使用する場合、より大きい数字でキャッシュされたアイテムが最初に有効期限切れになります。Cache モジュールは、キャッシュで利用可能なメモリに基づいて有効期限を決定します。次の例では、breakfastFoodOrdermothersBirthday の前に有効期限切れになります。

Cache.setItem('mothersBirthday', 'July 18th', { priority: 1 });
Cache.setItem('breakfastFoodOrder', 'Pancakes', { priority: 3 });

getItem()

Cache.getItem(key[, options]);

キャッシュからアイテムを取得します。アイテムが存在しないか、有効期限が切れている場合は null を返します。

// 標準ケース
Cache.getItem('key');
// コールバック関数を使用してアイテムを取得します。
// アイテムがキャッシュにない場合、コールバック関数が呼び出されます。
// コールバック関数が戻ると、値がキャッシュに設定されます。
Cache.getItem('key', { callback: callback });

removeItem()

キャッシュからアイテムを削除します。

Cache.removeItem(key);

clear()

キャッシュ内のすべてのアイテムを削除します。

Cache.clear();

getAllKeys()

キャッシュで利用可能なすべてのキーを返します。

Cache.getAllKeys();

getCacheCurSize()

キャッシュの現在のサイズをバイト単位で返します。

const size = Cache.getCacheCurSize();

configure()

setItem 機能のデフォルト設定を構成します。設定セクションで利用可能なすべてのオプションを確認できます。

const config = {
itemMaxSize: 3000, // 3000 bytes
defaultPriority: 4
// ...
};
const myCacheConfig = Cache.configure(config);
// キャッシュサイズ、アイテムのデフォルト TTL などのパラメータを変更できます。
// ただし、Cache の識別子である keyPrefix を変更しようとしないでください。

createInstance()

カスタム設定で Cache の新しいインスタンスを作成します。

const config = {
itemMaxSize: 3000, // 3000 bytes
storage: window.sessionStorage // sessionStorage に切り替える
// ...
};
const newCache = Cache.createInstance(config);
// Cache の識別子である新しい keyPrefix を指定してください。

デフォルト値を保持し、必要な値だけをオーバーライドすることもできます。

// デフォルト値を取得します
const defaultConfig = Cache.configure();
// デフォルト設定を渡し、必要なオプションだけをオーバーライドします。例:keyPrefix
const customCache = Cache.createInstance({
...defaultConfig,
keyPrefix: "my-custom-instance-prefix-",
});

API リファレンス

Cache モジュールの完全な API ドキュメントについては、API リファレンスをご覧ください。

設定

設定パラメータ

Cache モジュールの設定パラメータの一覧は以下の通りです。

パラメータ説明
keyPrefixstring新しいインスタンスを作成するときのみ設定可能な Cache の ID。
capacityInBytesnumberキャッシュの最大サイズ(バイト単位)。デフォルトは 1MB で、最大は 5MB です。
itemMaxSizenumberCache に設定できる個別アイテムの最大サイズ(バイト単位)。デフォルト値は 200KB です。
defaultTTLnumberキャッシュアイテムのミリ秒単位の TTL。デフォルト値は 72 時間です。
defaultPrioritynumberキャッシュアイテムのデフォルト優先度。デフォルト値は 5 で、最高優先度は 1 です。
warningThresholdnumberCache の現在の容量を適切なレベルに保つためのものです。デフォルトは 0.8 で、スペース使用率の 80% に対する警告を設定します。
storageStorageTypeCache に使用するストレージメディアム。サポートされている値は Web 開発用の LocalStorage(デフォルト)と SessionStorage、および React Native 用の AsyncStorage です。

アイテムの設定パラメータ

キャッシュ内のアイテムの設定パラメータの一覧は以下の通りです。

パラメータ説明
prioritynumberキャッシュに保持されるアイテムの優先度。優先度が高いほど有効期限が長くなります。
expiresnumberキャッシュアイテムの有効期限(ミリ秒単位)。
callbackfunctiongetItem() でコールバック関数を指定して、キャッシュミスシナリオを実装できます。提供された関数は、キャッシュキーに一致するものがない場合にのみ呼び出され、関数からの戻り値がキャッシュ内のキーの新しい値として割り当てられます。