2011-06-23 6 views
1

私はかなり複雑なアプリケーションを作成しています。それは複数のWebサーバーにまたがって実行されることが期待されています。そうしなければ簡単になります。いつでも変更可能なオブジェクトをキャッシュする必要がありますか?

基本的には、一連のクライアントレコードがあります。各クライアントレコードには、クライアント名や動的に作成される他のフィールドなど、すべての「実際の」データを含むXML列があります。ユーザーはいつでもクライアントの記録を更新できます。また、アプリケーションレコードもあります。各アプリケーションは複数のクライアントに関連付けられています。各アプリケーションは通常3つ以上のクライアントに関連付けられています。各クライアントのXMLデータは、通常5kを超えるテキストです。

私が行ったいくつかのプロファイリングでは、このXMLデータの取得と逆シリアル化はかなり高価な操作です。 Webアプリケーションの一部では、待ち時間が非常に短くなければなりません(related)。したがって、この部分では、私たちのWebアプリケーションはJSON Webサービスです。リクエストが行われると、通常、すべてのクライアントレコードが必要になります(現在どのようにコーディングされているかにより、完全に記録されます)。私はこの部分でできるだけデータベースのヒットを少なくしようとしています。

クライアントレコードのXMLオブジェクトをキャッシュするにはどのくらいの時間が必要ですか?ユーザーはいつでも変更することができることを知っているので、キャッシュする必要があるかどうかはわかりませんが、ユーザーはわずかに古くなったデータで暮らすことができますか?

答えて

2

任意の種類のスケジュールでキャッシュをリフレッシュするのではなく、アクセスしたときにクリティカルなレコードの最終更新日をキャッシュされた値と比較するだけです。これは非常に安価な操作でなければなりません。次に、必要なときにのみキャッシュを更新します。

1

クライアントがキャッシュされたXMLを検証するために、xmlのハッシュをデータベースに格納できます。

次に一致しない場合は、キャッシュを無効にして新しいキャッシュを取得します。

XMLが更新されると、ハッシュを更新すると、クライアントはクライアントに気付き、キャッシュを更新します。

1

SqlCacheDependencyを使用して、キャッシュからデータを確実に削除し、変更されたときにいつでもデータベースから再ロードする必要があります。

関連する問題