在Local Cache上使用基于通知的失效时,ttlValue
超时仍会使缓存项无效,从而在下一次请求时强制从缓存群集中获取。
例如,在下面的配置中,项目将在300秒后超时,但也会每隔60秒检查群集上的失效通知(例如,如果它们被删除):
<dataCacheClient name="default">
<localCache isEnabled="true" sync="NotificationBased" objectCount="100000" ttlValue="300" />
<clientNotification pollInterval="60" />
</dataCacheClient>
我有一组 不可变 的对象 - 即它们不会改变。这意味着他们永远不需要基于超时的失效来“刷新”自己。
这实质上意味着不必要地从本地缓存中删除不可变对象。如果这些项目很多,则可能会出现明显的性能下降,尤其是需要读取数千个项目时。
在DataCacheLocalCacheProperties
构造函数中将其设置为零时,出现以下异常:
An exception of type 'System.ArgumentException' occurred in Microsoft.ApplicationServer.Caching.Client.dll but was not handled in user code
Additional information: Time-out should be a positive value.
另一个选项我必须设置一个无法访问的号码。
为什么我们不允许本地缓存的超时为零?
我正在使用Azure角色内缓存(colocated)。
答案 0 :(得分:0)
您不能指定零作为ttlValue
,因为这意味着项目永远不会被缓存。
那么你的问题真的是&#34;为什么使用零作为ttlValue
没有用作特殊情况来表明项目永远不会失效?&#34;这只能由微软回答。
如果您将ttlValue
设置为int.MaxValue
,则这些项目将在68年内无效,这应该足够长。