1

Ehcacheでデータ更新ポリシーを指定するものはありますか?現在、アプリケーションをOSCacheからEhcacheに移行していますが、設定timeToIdleとを除いて、要素を更新する必要がある時期を指定する方法が見つからないようですtimeToLive

私が欲しいのは、キャッシュから要素にアクセスするときに、関連するリソースをチェックしてlastUpdateTime、キャッシュ要素よりも後で更新されたかどうかを確認することです。はいの場合、キャッシュを更新します。それ以外の場合は、キャッシュからコンテンツを提供します。

OSCacheでは、これはNeedsRefreshExceptionsをキャッチし、要素のカスタム更新ポリシーを設定することによって行われました。しばらくの間ドキュメントを調べてきましたが、Ehcacheでこれを実現する方法や例を見つけることができませんでした。

どんな助けでもいただければ幸いです:)。

アレックス

4

1 に答える 1

1

OSCacheの考え方にNeedsRefreshExceptionは本当に欠陥があります。まず、これは通常の実行フローに例外を使用するというアドバイスに反します(もちろん、古いキャッシュヒットは通常のフローと見なします)。第二に、これに対する例外の作成は本当に費用がかかります。

さて、あなたの質問に戻りましょう。私があなたの立場にあった場合、私は拡張するかnet.sf.ehcache.Element、エントリ値をチェックできるオブジェクトにラップする可能性を評価しますtimeToLive

しかし、主な質問は、なぜあなたはそれをする必要があるのか​​ということです。オブジェクトをキャッシュに入れてTTLを指定する場合、なぜ取得時にTTLをチェックする必要があるのでしょうか。キャッシュは、外部の支援なしでオブジェクトを削除できる必要があります。エントリを手動で削除する場合(オブジェクトが変更された場合など)にも同じことが当てはまります。多分私はここで何かが欠けていますか?

あなたが求めている機能は、リードスルーと呼ばれます。これを行う方法はここで説明されています:http://ehcache.org/documentation/concepts.html#read-through

--EHCache
への移行を待っている別の不幸なOSCacheユーザー:(

于 2010-05-10T09:35:32.020 に答える