Skip to main content

 

OutSystems 11オンラインヘルプ

 

 

OutSystems

キャッシュ

一部の要素のキャッシュを有効にすることでアプリのパフォーマンスを改善できます。キャッシュは、取得済みのデータや計算済みのデータを高速メモリに一時的に保存し、その後のリクエストのときにデータを効率よく読み込むことができるようにすることで、パフォーマンスを向上させます。

キャッシュはRAMを用いて行われ、すべてのフロントエンドサーバーで利用することができます。メモリ領域が必要になるたびに、LRU(Least Recently Used)アルゴリズムによって要素がキャッシュから削除されます。

マルチテナントアプリの場合はテナントごとにキャッシュがあり、テナントに関連するデータのみが保存されます。システムアクションEspaceInvalidateCacheTenantInvalidateCacheを使用して、マルチテナント環境のキャッシュを無効にすることができます。

キャッシュをサポートする要素は、以下のとおりです。

  • AggregateやSQLによって返されるリスト。
  • カスタムサーバーアクションの出力パラメータ。
  • Webブロックとそれらに含まれる要素(従来のWebアプリのみ)。

一部の要素は、キャッシュをサポートしていません。具体的には以下のようなものがあります。

  • 画面。現在この機能は、この要素をサポートしていません。
  • SubmitまたはAjax Submitが使用されているWebブロック。

SOAPに関する注記

SOAP Webサービスをサーバーアクションにカプセル化することを推奨します。その後、そのサーバーアクションのキャッシュを有効にしてください。

SOAP Webサービスには2つの実装があり、キャッシュのサポートが異なります。

  • 従来のSOAP Webサービス実装。名前に含まれる「(Deprecated)」で識別することができます。この実装は、キャッシュをサポートします。ただし、このレガシー機能を使用しているときに出力をキャッシュする必要がある場合も、キャッシュされるサーバーアクションにカプセル化することを推奨します。
  • 新しいSOAP Webサービス。この実装は、キャッシュをサポートしません。キャッシュを使用する場合は、キャッシュされるサーバーアクションにカプセル化する必要があります。

キャッシュ機能の有効化

要素のコンテンツのキャッシュを開始するには、Cache in Minutesプロパティをゼロより大きい値に設定します。

Cache in Minutesプロパティによるキャッシュ設定

キャッシュのメカニズム

キャッシュの仕組みを以下に示します。

  • 初めて使用するときは、要素が評価され、結果のコンテンツがキャッシュに保存されます。
  • 2回目以降に使用するときは、保存済みのコンテンツがサーバーから返され、評価はスキップされます。

以下の場合は、キャッシュ済みの要素があれば再度評価され、キャッシュ内の結果のコンテンツが更新されます。

  • 要素のコンテンツが最後にキャッシュされてからの経過時間が要素のCache in Minutes値を超えている場合。
  • 要素に入力パラメータがあり、新しい値に対応するキャッシュ済みのコンテンツがない場合。
  • キャッシュが無効になっている場合(例: 再パブリッシュ後、サーバーの再起動後、キャッシュ無効化の明示的な呼び出し後)。

また、以下のことに留意する必要があります。

  • 従来のアプリのWebブロックでは、ブロックに含まれるすべての要素のコンテンツがキャッシュされます。ただし、これらのいずれかの要素のコンテンツが変更されても、キャッシュは自動的には更新されません。キャッシュが更新されるのは、Webブロック全体が再度評価されたときのみです。
  • キャッシュ済みの要素は、Record型、List型、Binary Data型の入力パラメータを持つことができません。

プロデューサモジュールやよびコンシューマモジュールのキャッシュ

キャッシュは、プロデューサモジュールの参照が強い依存関係であるか弱い依存関係であるかによっても異なります。

モジュールが強い依存関係である場合は、各コンシューマモジュールがリクエストを処理するのに応じてアクションロジックが実行されます。キャッシュされた値は各プロデューサ内に存在し、プロデューサ間で再利用することはできません。

メモリ内に単一のキャッシュされた値のインスタンスを必要とし、それを使用してすべてのリクエストを処理する場合は、弱い依存関係でアクションを公開してください。このようにすれば、アクションを実行してキャッシュするリクエストがプロデューサーモジュール内にのみ存在するようになり、すべてのコンシューマが同じ値を参照するようになります。

以下のコンテンツについて、キャッシュを検討することができます。

  • 実行時間によってエンドユーザーエクスペリエンスに悪影響を及ぼす要素
  • システムリソース(データベース、CPU、メモリなど)への負荷が過大である要素
  • データベースや外部システムからデータを取得する要素
  • 同じ入力パラメータに対して返される結果がほとんど変化しないか、一定の方法でしか変化しない要素

たとえば、以下のような場合です。

  • データベース内に保存されたカテゴリのリストを含むWebブロック。
  • 外部システムから求人情報を取得する利用対象のSOAP Webサービスのメソッド。
  • 従業員のリストを返すSOAP Webサービスから利用されるメソッド。
  • Was this article helpful?