- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当涉及到 ServiceStack 时,我是一个相对的菜鸟,并且继承了一个似乎试图利用 MemoryCacheClient 的项目,但似乎没有缓存发生在单个请求的范围之外,例如无论我添加什么到期时间,缓存都不会在请求之间保留。
这是预期的吗?这是 ICacheManager 的实现:
public class CacheManager : ICacheManager
{
public CacheManager(ICacheClient cacheClient)
{
CacheClient = cacheClient;
}
public void Clear(IEnumerable<string> cacheKeys)
{
Clear(cacheKeys.ToArray());
}
public void Clear(params string[] cacheKeys)
{
CacheClient.ClearCaches(cacheKeys.ToArray());
}
public ICacheClient CacheClient { get; private set; }
public T Resolve<T>(string cacheKey, Func<T> createCacheFn) where T : class
{
return Resolve(cacheKey, new TimeSpan(0, 15, 0), createCacheFn);
}
public T Resolve<T>(string cacheKey, TimeSpan expireIn, Func<T> createCacheFn) where T : class
{
var cacheResult = CacheClient.Get<T>(cacheKey);
if (cacheResult != null)
return cacheResult;
var item = createCacheFn();
CacheClient.Set(cacheKey, item, expireIn);
return item;
}
}
这是使用 AutoFac ContainerBuilder 连接起来的,如下所示:
_builder.Register(c => new MemoryCacheClient())
.As<ServiceStack.CacheAccess.ICacheClient>();
_builder.RegisterType<CacheManager>()
.As<ServiceStack.CacheAccess.ICacheManager>();
最佳答案
MemoryCacheClient
实例必须是唯一的。所以你必须告诉 Autofac 只创建一个实例:
_builder.Register(c => new MemoryCacheClient())
.As<ServiceStack.CacheAccess.ICacheClient>()
.SingleInstance();
当您未指定实例范围模式时,Autofac 使用 instancePerDependency :每次解析时都会返回一个新实例。参见 instance scope documentation有关实例范围的更多信息。
关于asp.net-mvc - ServiceStack MemoryCacheClient 不缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29515896/
我有一项服务可以提取销售区域的统计信息。该服务计算所有区域的统计数据,然后缓存该集合,然后仅返回请求的区域。 public object Any(RegionTotals request) {
如果 XRedisClientManager 用于 ServiceStack 缓存,则 Redis 本身将能够执行生命周期。如果改用 MemoryCacheClient,这不会有任何影响,对吧? 最佳
当涉及到 ServiceStack 时,我是一个相对的菜鸟,并且继承了一个似乎试图利用 MemoryCacheClient 的项目,但似乎没有缓存发生在单个请求的范围之外,例如无论我添加什么到期时间,
我是一名优秀的程序员,十分优秀!