キャッシュの概要

システム内には、まれにしか変更されない情報が大量にあります。この種の情報がエンド・ユーザーまたはバッチ・プロセスから要求されるたびにデータベースにアクセスするのを回避するために、静的情報のキャッシュがWebサーバーおよびバッチ・スレッド・プール・ワーカーに保持されます。これらは"アプリケーション・キャッシュ"と呼ばれます。アプリケーション・キャッシュの例としては、次のものがあります

  • システム・メッセージ

  • フィールド・ラベルおよびその他フィールド情報

  • セキュリティ情報

フレームワーク製品には、一般的に使用される(まれに変更されることもある)データに対して様々な特定のキャッシュが用意されています。また、特定のエッジ・アプリケーションが追加のキャッシュを必要に応じて導入する可能性があります。

情報は各ユーザーのブラウザにもキャッシュされます。

次のトピックでは、様々なキャッシュのリフレッシュについて説明します。

サーバー・キャッシュ

サーバー・キャッシュは、Webサーバーにキャッシュされているデータを指します。このキャッシュの重要な用途は、ユーザーがアプリケーションにオンライン・アクセスできるようにすることです。キャッシュは、システム全体をナビゲートする際に快適なパフォーマンスを提供するために、常にデータベースにアクセスするのではなく、キャッシュからデータにアクセスできるようにします。Webサーバー・キャッシュへのユーザー・アクセスに加えて、Webサーバーにデプロイされたその他の機能も、同様の方法でキャッシュを使用します。たとえば、WebサービスはWebサーバーにデプロイされ、独自のバージョンのキャッシュにアクセスします。

キャッシュの内容は、Webサーバーが再起動されるたびに消去されます。これは、アプリケーションを使用してユーザーおよびWebサービスが再起動されるとデータベースから新たに値が取得されることを意味します。

また、キャッシュの内容を即時に消去するために、ブラウザのURLで発行できるフラッシュ・コマンドも提供されています。flushAll.jspコマンドは、すべてのキャッシュをフラッシュします。

たとえば、次の場合を想定します。

  • 作業しているWebサーバーとポートの名称はOU-Production:7500です。
  • 新しいレコードを管理表に追加し、適切なトランザクションで即時に使用可能にする必要があります

ブラウザのアドレス・バーにコマンドhttp://OU-Production:7500/flushAll.jspを発行します。このコマンドは、ポート番号の後に表示される典型的なcis.jspを置換することに注意してください。

システムが正しく構成されている場合は、flushAllコマンドによって、キャッシュ(Webサービス・キャッシュおよびスレッド・プール・ワーカー・キャッシュを含む)をグローバルにフラッシュする要求が発行されます。この機能では、JMSトピックを使用してフラッシュ要求が発行されます。JMSトピックの構成方法の詳細は、サーバー管理ガイドを参照してください。

また、システムにはビジネス・サービスF1-FlushAllServiceがあり、これはflushAllコマンドと同等です(ブラウザ・セッションの再起動が行われない点を除きます)。これは、構成データに対する更新をオーケストレーションするように構築されたプロセスにおいて、キャッシュの即時フラッシュを確実に行う必要がある場合に役立つ可能性があります。このビジネス・サービスは、REST Webサービスとしても公開されます。

バッチ・キャッシュ

バッチ・ジョブを発行すると、バッチ・コンポーネントがHibernateデータ・キャッシュを使用して、頻繁に変更されない管理データをキャッシュします。レコードがこのキャッシュに含まれている表は、「バッチ用にキャッシュ済」という「キャッシング形態」値を使用して構成されます。これは、多くの場合、"L2キャッシュ"と呼ばれます。詳細は、「表」を参照してください。スレッド・プール・ワーカーを起動すると、キャッシュ済としてマークされた表のデータがロードされ、そのスレッド・プールが実行されている間はキャッシュされます。

さらに、適用可能な場合は、バッチ・ジョブでアプリケーション・キャッシュにアクセスすることもできます。スレッド・プール・ワーカーを起動すると、キャッシュされているアプリケーション・データがロードされ、そのスレッド・プールが実行されている間はキャッシュされます。

「バッチ用にキャッシュ済」とマークされた表を更新するバッチ・ジョブがある場合は、そのバッチ・ジョブを実行するときに、キャッシュを無効にして構成された特別なスレッド・プールを使用する必要があります。システム管理者に連絡して、スレッド・プールがこのとおりに構成されていることを確認してください。

次回のバッチ・ジョブに使用できるようにキャッシュされているデータに変更がある場合は、次の方法でキャッシュをリフレッシュできます。

  • デフォルトでは、Hibernateキャッシュは60秒ごとに自動的にリフレッシュするように構成されています。ただし、実装では、リフレッシュ間隔の秒数を変更または自動キャッシュを完全に無効にするように構成を上書きできます。バッチ・ジョブで使用されるアプリケーション・キャッシュは、このリフレッシュによる影響を受けません。

  • スレッド・プール・ワーカーを再起動します。

  • F1–FLUSH (すべてのキャッシュのフラッシュ)バックグラウンド・プロセスを実行します。このバックグラウンド・プロセスは、すべてのスレッド・プールのすべてのスレッド・プール・ワーカー用にキャッシュされているアプリケーション・データをフラッシュします。

  • 「サーバー・キャッシュ」の項で説明しているように、スレッド・プール・ワーカーがグローバル・フラッシュの要求をリスニングするようにリージョンで構成した場合は、flushAllコマンドが発行されると、スレッド・プール・ワーカーのキャッシュもリフレッシュされます。

クライアント・キャッシュ

Webサーバーのキャッシュに加えて、各ユーザーのブラウザにも情報がキャッシュされます。Webサーバーに保持されているキャッシュを消去した後は、クライアントのブラウザに保持されているキャッシュも消去する必要があります。これを行うには、次のステップに従います(使用するブラウザによっては、ステップが若干異なる場合があります)。

  • ブラウザのメニュー・バーにある「ツール」を選択します。
  • 表示されるメニューの「インターネット オプション...」を選択します。
  • 表示されるポップアップの「ファイルの削除」ボタンをクリックします。
  • 表示される次のポップアップの「すべてのオフライン コンテンツを削除する」を選択し、「OK」をクリックします。
  • 次に、標準URLを入力して、システムを再度呼び出します。
注意: ブラウザのキャッシュの自動リフレッシュ。各ユーザーのキャッシュは、使用しているWebサーバーのweb.xmlドキュメントに定義されているmaxAgeパラメータに従って自動的にリフレッシュされます。このパラメータは、開発/テスト環境では1秒に設定し、本番環境では28800秒(8時間)に設定することをお薦めします。この値を変更する必要がある場合は、システム・サポートに連絡してください。