Mashup Builder > データサービスとバインド > マッシュアップでのデータサービスの実行 > マッシュアップ内のサービスデータのキャッシュ
マッシュアップ内のサービスデータのキャッシュ
マッシュアップ内でデータの取得に使用されるサービスのデータのキャッシュを有効にできます。キャッシュによってサーバーに対するネットワークリクエストの数が減ることで、パフォーマンスとユーザーエクスペリエンスが向上します。たとえば、サービスが頻繁に実行され、返されるデータは頻繁に変わらない場合は特に、ロードに数秒かかるサービスをキャッシュするとネットワークの使用量を削減できます。キャッシュが有効でプロパティ CacheDuration が設定されている場合、指定した時間が経過してキャッシュが期限切れになるまで、サービスの結果は一時的にブラウザに保存されます。イベントを InvalidateCache サービスパラメータにバインドして、サービスのキャッシュデータを手動でクリアすることもできます。これにより、キャッシュのライフサイクルをプログラムで制御できます。たとえば、ユーザーがマッシュアップ内の特定の場所でデータを更新した場合に、InvalidateCache をトリガーして、次の呼び出しで強制的に新しいデータをフェッチさせることができます。
たとえば、リアルタイムの気象データを表示するサービスを使用するマッシュアップがあるとします。「データプロパティ」パネルで CacheReturnedData を選択することで、キャッシュを有効にできます。CacheDuration を 60000 ミリ秒 (1 分) に設定し、CacheStrategy「マッシュアップ名」を選択して、マッシュアップインスタンス間でキャッシュを共有します。ユーザーが 1 分以内にマッシュアップを再読み込みした場合、ThingWorx はキャッシュされた結果を提供します。この期間が経過すると、サービスが再度呼び出されます。マッシュアップが入力パラメータ (選択されている市区町村など) を受け入れる場合、入力ごとにデータをキャッシュするように CacheKeyParameters を設定できます。マッシュアップがキャッシュする組み合わせの数が多すぎるか、メモリの使用量が多すぎる場合。
マッシュアップデータをキャッシュする際のベストプラクティス
キャッシュを選択的に使用し、静的なデータまたは変化の遅いデータを返すサービスに対してのみ有効にします。
適切なキャッシュ期間を設定します。データの更新頻度が低い場合を除いて、キャッシュ時間を長くしないようにします。
大量のデータセットのキャッシュは避けます。代わりに、結果をページ付けするか、必要なものだけにデータを制限します。
キャッシュストラテジーをテストします。開発中にキャッシュデバッガツールを使用して、キャッシュの動作を検証します。
マッシュアップ内のサービスのキャッシュの有効化
マッシュアップ内のサービスのキャッシュを有効にするには、次の手順に従います。
1. Mashup Builder で、「データ」パネルを開き、キャッシュするデータサービスを選択してそのデータプロパティを表示します。
2. 「データプロパティ」パネルの「アドバンス」で、プロパティ CacheReturnedData の横のチェックボックスをオンにします。
3. プロパティ CacheDuration を使用して、結果を保存しておく時間をミリ秒単位で指定します。
4. 必要に応じて、プロパティ CacheStrategy を使用して、キャッシュストレージのストラテジーを指定します。
5. 特定のパラメータ入力の結果をキャッシュするには、CacheKeyParameters の値のドロップダウンリストからパラメータを選択します。
6. 「保存」をクリックし、「マッシュアップを表示」をクリックします。
ランタイムで、そのサービスが初めて実行されたときにサービスデータがキャッシュされます。プロパティ CacheKeyParameters を使用してサービスに選択した入力パラメータに基づいて返されたすべてのデータがキャッシュされます。CacheDuration で設定した時間が経過するまでは、サービスが再度実行されると、保存されているキャッシュからデータが取得されます。
キャッシュストラテジーの選択
プロパティ CacheStrategy を使用して、キャッシュされたデータを次の 2 つの方法のいずれかで保存できます。
「マッシュアップインスタンス」 - 現在のマッシュアップインスタンスの一意の識別子に基づいてキャッシュが生成されます。このストラテジーを使用すると、マッシュアップのインスタンスごとに別個のキャッシュが作成されるので、エンティティとサービスが同じであっても、マッシュアップインスタンスごとに異なるデータが表示される場合に便利です。
「マッシュアップ名」 - マッシュアップ、エンティティ、サービス名に基づいてキャッシュが生成されます。コレクションウィジェットなど、マッシュアップの複数のインスタンスに同じデータが表示されることが想定されている場合や、マッシュアップがほかのマッシュアップ内に埋め込まれている場合に、このストラテジーを使用します。このストラテジーはインスタンスキャッシュほど個別化されておらず、キャッシュは同じマッシュアップのすべてのインスタンスで共有されます。
サービスキャッシュのプロパティ
次の表に、「データプロパティ」パネルのサービスに使用可能なキャッシュプロパティを示します。
プロパティ
説明
ベースタイプ
デフォルト値
バインド可能か
CacheReturnedData
サーバーから返されたデータをキャッシュするには、これを有効にします。
BOOLEAN
False
いいえ
CacheDuration
キャッシュされたデータを保持する時間をミリ秒単位で設定します。データがキャッシュされている場合、この時間が経過した後でのみ、サーバーから新しいデータが取得されます。
INTEGER
はい
CacheStrategy
キャッシュの保存方法を制御します。キャッシュされた結果を「マッシュアップインスタンス」または「マッシュアップ名」に基づいて保存できます。
STRING
マッシュアップインスタンス
いいえ
CacheKeyParameters
ドロップダウンリストが開き、キャッシュキーの生成に使用する入力パラメータを選択できます。サービス入力パラメータを選択すると、その入力でのサービスの結果がキャッシュされます。
STRING
いいえ
MaxResultSets
データサービスで保存する結果の最大数を制御します。入力パラメータが更新されると、新しい結果がキャッシュされます。最大数に達すると、最も古い結果が削除されます。
INTEGER
10
はい
InvalidateCache
サービスのキャッシュされた結果をクリアします。キャッシュが有効な場合にのみ使用できます。このサービスをトリガーして、サーバー変更が発生したときにキャッシュデータを更新したり、新しいデータを手動で強制的に取得したりできます。
* 
InvalidateCache サービスは CacheReturnedData が有効な場合にのみ使用できます。
Service
はい
キャッシュのパフォーマンスの検証とトラブルシューティング
キャッシュによってネットワークパフォーマンスは向上しますが、メモリに保存されるデータが多すぎると、マッシュアップの応答性が低下し、パフォーマンスの問題が生じる可能性があります。これらの問題を軽減するため、ThingWorx ではキャッシュに使用可能なメモリの量が自動的に制限されます。アプリケーションのキャッシュが最大サイズを超えた場合、新しい結果セットを保存するのに十分なスペースができるまで、キャッシュエントリが古いものから順に自動的にパージされます。ランタイムデバッガツールを使用して、マッシュアップで使用されるキャッシュデータを監視および管理できます。ランタイムでデバッガツールを開くには、マッシュアップツールバー (表示されている場合) の「デバッグ情報を表示/非表示」ボタンをクリックします。ランタイムツールバーが表示されていない場合は、まず Ctrl + Alt + Shift + F9 キーを押してそれを表示します。
* 
ThingWorx は、サービスが保存した結果の最大数に達した場合、または合計キャッシュサイズが制限を超えた場合に、キャッシュされたアイテムを自動的に削除します。キャッシュが合計サイズ制限を超えると、ThingWorx は、新しい結果セットを保存するのに十分なスペースが生成されるまで、キャッシュされているエントリを古いものから順に削除します。これらの制限によって、最適なパフォーマンスを確保し、ブラウザでメモリが過剰に使用されることを防ぎます。
次の図は、ランタイム中のデバッガを示しています。「Cache Data」タブの上部には、キャッシュされたアイテムの合計数、キャッシュのおおよその合計サイズ、および許可される最大キャッシュサイズを示すサマリーが表示されます。このサマリーによって、キャッシュがパフォーマンスに影響を与えているかどうかをすばやく評価できます。
デバッガには、キャッシュされたサービスごとに次の情報が表示されます。
マッシュアップ名 - サービスを呼び出したマッシュアップ。
サービス名 - データをキャッシュした特定のサービス。
キャッシュ ID - キャッシュされた結果をグループ化して識別するために使用される内部識別子。
キャッシュされた結果エントリ。各アイテムには次の情報が表示されます。
キャッシュされたアイテムのキャッシュストラテジー。
キャッシュされた結果のサイズ。
最終アクセス時刻。
サービス呼び出しで使用された入力パラメータとその値。
キャッシュエントリを手動で削除するための削除ボタン。
キャッシュされたアイテムが手動または自動で削除されると、サマリーが更新されます。各セクションを展開したり折りたたんだりすることもできます。この例では、マッシュアップ名に対して最初のサービス getCategories がキャッシュされています。serviceDefsMock などのその他のサービスは、Mashup Instance に対してキャッシュされています。このサービスのキャッシュされた入力パラメータとその値もリストされています。
これは役に立ちましたか?