質問

特定の間隔でデータベースを更新する別のサービスを使用して、99%の読み取り専用のWebアプリケーションを持っています(10分ごとなど)。このサービスは、アプリケーションにセカンドレベルのキャッシュを無効にするようにどのように指示できますか?それは実際に重要ですか? (古くなったデータがあまりにも多くあるかどうかは実際には気にしません)キャッシュを無効にしないと、レコードに必要な時間が更新されます(Syscacheを使用している場合)

役に立ちましたか?

解決

特定のエンティティ、エンティティタイプ、またはコレクションに対して2レベルのキャッシュを手動で処分できます。

から http://knol.google.com/k/fabio-maulo/nhibernate-chapter-16-improving/1nr4enxv3dpeq/19#

セカンドレベルのキャッシュには、インスタンス、クラス全体、コレクションインスタンス、またはコレクション全体の役割のキャッシュ状態を追い出すために、IsessionFactoryで定義された方法があります。

sessionFactory.Evict(typeof(Cat), catId); //evict a particular Cat
sessionFactory.Evict(typeof(Cat));  //evict all Cats
sessionFactory.EvictCollection("Eg.Cat.Kittens", catId); //evict a particular collection of kittens
sessionFactory.EvictCollection("Eg.Cat.Kittens"); //evict all kitten collections

他のヒント

古いデータを持っている可能性が大丈夫な場合は、デフォルトの有効期限を快適なものに設定するだけで、設定されます。

例:

<property name="cache.default_expiration">120</property>

これにより、デフォルトの有効期限が2分に設定されるため、古いデータがそれよりも古いデータが表示されることはありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top