最近のアクセス:
Cache API

アプリケーションには多くの場合、グローバルにアクセスされるデータセットが含まれます。これには、初期化プロセスの結果、あらゆるユーザーにとって同一のデータなどが該当します。このようなデータは、一度計算した後はアクセス可能にしておき、アプリケーションにリクエストされた場合にのみ更新するようにすると便利です。 
典型的なケースとしては、たとえば、データがあまり頻繁に変化せず (データベースにアクセスするかサービスを呼び出すことで取得可能)、データベースにアクセスすることや Web サービスを呼び出してデータを取得することが非常に高価な場合などが考えられます。
Web セッションは 1 つの解決策となり得ますが、アプリケーションのユーザーごとに定義する必要があります。一方、Cache API は、アプリケーションのすべてのユーザーを対象に定義して、アクセス可能にできます。
Cache API を利用することで、アプリケーションのグローバルデータを格納して、データをアクセス可能にしつつ、必要に応じてデータを無効にすることができます。キャッシュは、 [ Cache Provider ] プロパティに応じて、アプリケーションサーバーにローカル保存することも、分散キャッシュにすることも可能です。 

Server Cache API を使用する方法

キャッシュは、データタイプの 1 つであり、さまざまなメソッドを使用してアプリケーションサーバーや分散キャッシュを管理します。使用するメソッドは次のとおりです:

メソッド名

説明

Server Cache 静的メソッド
Cache.GetCache(Character:Name): Cache キャッシュインスタンスを取得します。キャッシュインスタンスが存在しない場合は新しく作成します。
Cache.ClearAllCaches() すべてのキャッシュを消去します。これには、そのユーザー本人が作成したものも、ほかのユーザーが作成したものも含まれます (Smart Devices キャッシュと Database キャッシュ*)。
Server Cache 非静的メソッド  
&Cache.Set(Character: Key, Character: Value, [ Numeric: DurationMinutes ] ) 指定したキーのキャッシュの値を格納します。有効期限の値が 0 の場合 (既定)、そのアイテムが期限切れになることはありません (ただし、ほかのアイテムの容量を確保するために、サーバーから削除されることはあります)。
この関数を呼び出す方法は 2 つあります:
&Cache.Set("<キー>", "<値>", 1)
&Cache.Set("<キー>", "<値>")
2 つ目の場合、有効期限は既定値の 0 に設定され、このアイテムが期限切れになることはありません。
&Cache.Get(Character:Key): Character アイテムが見つかった場合は、そのキーに格納されているアイテムを返します。見つからなかった場合は、空の文字列が返されます。 
&Cache.Contains(Character:Key): Boolean アイテムが見つかった場合は、True が返されます。見つからなかった場合は、False が返されます。
&Cache.Remove(Character:Key) キャッシュからアイテムを削除します。
&Cache.Clear() キャッシュを消去します。キャッシュからすべてのアイテムが削除されます。

通貨の値を表示するアプリケーションを想定します。
&CacheName = "CurrencyValueCache"  
&Cache=Cache.GetCache(&CacheName)  //&Cache は Cache データタイプです。

if(&Cache.Contains("Dollar"))
    &Value=&Cache.Get("Dollar")
else
    //ここで、通貨値を返すサービスを呼び出し、&value 変数をロードします。
    &Cache.Set("Dollar",&value,&expTime)
endif

* Smart Devices および Database Cache API

GeneXus には、キャッシュ処理メカニズムが搭載されています (詳細は「GeneXus アプリケーションでのキャッシュ処理」を参照してください)。また、スマートデバイスのキャッシュ処理ResultSet キャッシュ処理に関しては、キャッシュの有効期限を管理する便利なメソッドも用意されています。
場合によって、キャッシュを強制的に消去する場合があります (たとえば、SQL クエリを再実行するが、データベースキャッシュからはデータを取得しない場合など)。これは、分散キャッシュメカニズムを使用しているときに特に便利です。
キャッシュをリセットするには、SD キャッシュ処理では Cache.SmartDevices.Clear メソッドを、ResultSet キャッシュ処理では Cache.Database.Clear メソッドをそれぞれ使用します。
 

メソッド名

説明

SmartDevices
Cache.SmartDevices.Clear() スマート デバイス キャッシュを消去します。スマート デバイス キャッシュからすべてのアイテムが削除されます。
Cache.SmartDevices.Remove(Character:Key) 指定したキーの SD キャッシュを削除します。Key はテーブル名です。
例: Cache.SmartDevices.Remove(&TableName)
Database
Cache.Database.Clear() データベースキャッシュを消去します。データベースキャッシュからすべてのアイテムが削除されます。
 

データベースキャッシュを消去する

Cache.Database.Clear()
 
Cache API サンプルから、サンプルをダウンロードできます。



キーワード: グローバルセッション 


サブページ
Created: 17/05/30 19:02 by Admin Last update: 21/05/21 02:39 by Admin
カテゴリ
Powered by GXwiki 3.0