我们正在为我们的云服务使用Microsoft Azure缓存服务,该服务具有多个Web角色和辅助角色实例。托管缓存还用于存储用户会话。一切都配置好了。
有没有什么方法可以一次刷新/清除托管缓存服务中的所有对象?我们不想通过它的密钥删除每个对象。 如果有办法做到这一点,那么我们如何清除除用户会话对象之外的所有内容?
我知道API的文档说它清除了缓存中的所有对象,但不确定它是否适用于托管缓存服务? 的 Microsoft.ApplicationServer.Caching.Clear()
static DataCacheFactoryConfiguration cacheFactoryConfiguration = new DataCacheFactoryConfiguration("default");
static DataCacheFactory cacheFactory = new DataCacheFactory(cacheFactoryConfiguration);
static DataCache cache = cacheFactory.GetDefaultCache();
cache.Clear();
答案 0 :(得分:0)
没有直接的API来实现这一目标。如果您没有为缓存的对象指定生存期,则会在48小时后将其清除。
答案 1 :(得分:0)
我设法通过创建另一个专门用于存储会话的命名缓存来解决此问题。 您需要做的就是配置Web应用程序(修改web.config)并让azure分布式缓存会话提供程序知道新的命名缓存名称。 e.g。
<sessionState mode="Custom" customProvider="AFCacheSessionStateProvider">
<providers>
<add name="AFCacheSessionStateProvider" type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" cacheName="dedicatednamedcache" dataCacheClientName="dedicatednamedcache" applicationName="AFCacheSessionState"/>
</providers>
</sessionState>
所以在清除整个缓存时,只需清除命名缓存(默认命名缓存),而不是用作会话存储的命名缓存。