2

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 角色内缓存(托管)。

4

1 回答 1

0

您不能将零指定为,ttlValue因为这意味着项目永远不会被缓存。

那么您的问题实际上是“为什么使用零作为ttlValue不用作特例来指示项目永远不应该失效?” 这只能由微软来回答。

如果设置ttlValueint.MaxValue,则项目在 68 年内不会失效,这应该足够长了。

于 2014-11-03T14:43:47.487 回答