この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

保存可能なアクション

アクションを保存可能とマークし、フレームワークによってその応答をクライアント側のキャッシュに保存できます。キャッシュは、一時的にネットワークから切断されているデバイスでアプリケーションを機能させる場合に役立ちます。

保存可能なアクションは、サーバにコールされない可能性があります。データを更新または削除するアクションは保存可能とマークしないでください。

警告

JavaScript コールバックの getState()SUCCESS が返される、成功したアクションが保存されます。

保存可能なアクションが送信された後、サーバから返される前に中止された場合でも、戻り値はストレージに追加されますが、アクションのコールバックはコールされません。

保存可能なアクションのアクション応答は、内部フレームワークで提供される actions というストレージに保存されます。この保存された応答は、期限切れになっていなければ、サーバ側コントローラからの応答の代わりに同じサーバ側のアクションへの後続のコールで返されます。

保存された応答が有効期限に達すると、新しい応答がサーバ側コントローラから取得され、後続のコールで actions ストレージに保存されます。

保存可能なアクションのマーク付け

サーバ側のアクションを保存可能とマークするには、JavaScript コードで次のようにアクションの setStorable()をコールします。

1a.setStorable();

保存可能なアクションは、常に暗黙的に中止可能としてもマークされます。

メモ

setStorable 関数は省略可能なパラメータを取ります。このパラメータは、ストレージオプションを表すキー - 値ペアと設定値の設定対応付けです。次のプロパティのみを設定できます。

ignoreExisting
true に設定すると、項目が期限切れになっているかどうかに関わらず、保存された項目が新しく取得された値で更新されます。デフォルト値は、false です。

アクション応答のストレージオプションを設定するには、この設定対応付けを setStorable に渡します。

すべての要求に対するアクション応答の更新

保存可能なアクションがサーバから動的コンテンツを返す場合、更新間隔を 0 に設定してデータがサーバから更新されるようにします。アクション応答がすでにキャッシュされている場合、サーバの往復処理中はキャッシュされた応答が表示されます。

既存の保存された応答を無視するには、次のように設定します。

1a.setStorable({
2    "ignoreExisting": "true"
3});

この例は、setStorable() を使用してクライアント側のキャッシュにサーバ側のアクション応答を保存する方法を示しています。マークアップには、クライアント側の runActionAtServerAndStore コントローラアクションをトリガするボタンが含まれています。このクライアント側のアクションは、サーバ側の fetchDataRecord アクションをコールします。次に、アクションが保存可能とマークされて実行されます。サーバ側のアクションの戻り値は、コールバックで取得されます。

次のコンポーネントマークアップにはボタンが含まれており、アクションストレージを初期化します。

1<aura:component render="client" extensible="true" 
2 controller="java://org.auraframework.impl.java.controller.AuraStorageTestController" 
3 implements="auraStorage:refreshObserver">
4            
5    <auraStorage:init debugLoggingEnabled="true"
6                         name="actions" 
7                         secure="true" 
8                         persistent="false"
9                         clearStorageOnInit="true"
10                         defaultExpiration="50" 
11                         defaultAutoRefreshInterval="60" />
12
13    <ui:button label="Run action at Server and mark as storable"
14      press="{!c.runActionAtServerAndStore}" 
15      aura:id="ForceActionAtServer"/>
16
17</aura:component>

コンポーネントのクライアント側の JavaScript コントローラでのアクションを次に示します。

1runActionAtServerAndStore:function(cmp, evt, helper){
2    // Get server-side action 
3    var action = cmp.get("c.fetchDataRecord");
4
5    action.setCallback(cmp, function(response){
6        var returnValue = response.getReturnValue();
7    });
8
9    // Set server-side action as storable
10    action.setStorable();
11
12    // Run server-side action
13    $A.enqueueAction(action);
14},