2

アプリケーションでキャッシュ アプリケーション ブロックを使用しています。構成ファイルは次のようになります。

<cachingConfiguration defaultCacheManager="Cache Manager">
    <cacheManagers>
      <add name="ParamCache" type="Microsoft.Practices.EnterpriseLibrary.Caching.CacheManager, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" expirationPollFrequencyInSeconds="60" maximumElementsInCacheBeforeScavenging="1000" numberToRemoveWhenScavenging="10" backingStoreName="NullBackingStore"/>
    </cacheManagers>
    <backingStores>
      <add type="Microsoft.Practices.EnterpriseLibrary.Caching.BackingStoreImplementations.NullBackingStore, Microsoft.Practices.EnterpriseLibrary.Caching, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="NullBackingStore"/>
    </backingStores>
</cachingConfiguration>

私は、expirationPollFrequencyInSeconds属性がキャッシュに格納された値の有効期限を制御すると思っていたので、キャッシュに 60 秒以上格納されている値をフェッチしようとすると、キャッシュではなく DB からフェッチされます。ただし、この構成では、値がまだ約 5 分間キャッシュからフェッチされており、DB から更新された値を取得していることがわかります。

私は何が欠けていますか?

4

2 に答える 2

3

問題が見つかりました。expirePollFrequencyInSecondsパラメーターは、キャッシュ内のアイテムの有効期限には影響しません。期限切れのアイテムのクリーンアップの頻度のみに影響します。

実際にはアイテムがキャッシュに追加されたときに有効期限が設定され、私の場合は5分に設定されていました...

于 2013-08-07T14:26:58.267 に答える