Httpcontext 当前缓存被清除
Httpcontext current cache gets cleared
我正在使用 Insert
方法将值存储到 HttpContext.Current.Cache
中:
HttpContext.Current.Cache.Insert(key, value, null, DateTime.Now.AddMinutes(1440), TimeSpan.Zero);
在我看来,这应该在 1440 分钟内将值存储在缓存中。但是不知何故缓存被清除并且密钥不再存在。上次我检查这个缓存在大约 30 分钟内保存。
是否可以通过某种方式清除缓存?如果 AppPool 被回收或类似的东西?
是的,缓存存储在内存中,直到进程停止,因此重新启动/重置 IIS 或回收应用程序池将清除缓存。如果是本地主机,构建应用也会清除缓存。
你确定那段代码被执行了吗?在 Cache.Insert
中同时设置 AbsoulteExpiration
和 SlidingExpiration
是非法的。如果执行,您的代码应该抛出 ArgumentException
。
看到这个 link。
正确的用法是
HttpContext.Current.Cache.Insert(key, item, null, dateExpiration, Cache.NoSlidingExpiration);
如果您想要 AbsoluteExpiration
1440 分钟,请使用 Cache.NoSlidingExpiration
。
HttpContext.Current.Cache.Insert(key, value, null, DateTime.Now.AddMinutes(1440), Cache.NoSlidingExpiration);
希望对您有所帮助。
我正在使用 Insert
方法将值存储到 HttpContext.Current.Cache
中:
HttpContext.Current.Cache.Insert(key, value, null, DateTime.Now.AddMinutes(1440), TimeSpan.Zero);
在我看来,这应该在 1440 分钟内将值存储在缓存中。但是不知何故缓存被清除并且密钥不再存在。上次我检查这个缓存在大约 30 分钟内保存。
是否可以通过某种方式清除缓存?如果 AppPool 被回收或类似的东西?
是的,缓存存储在内存中,直到进程停止,因此重新启动/重置 IIS 或回收应用程序池将清除缓存。如果是本地主机,构建应用也会清除缓存。
你确定那段代码被执行了吗?在 Cache.Insert
中同时设置 AbsoulteExpiration
和 SlidingExpiration
是非法的。如果执行,您的代码应该抛出 ArgumentException
。
看到这个 link。
正确的用法是
HttpContext.Current.Cache.Insert(key, item, null, dateExpiration, Cache.NoSlidingExpiration);
如果您想要 AbsoluteExpiration
1440 分钟,请使用 Cache.NoSlidingExpiration
。
HttpContext.Current.Cache.Insert(key, value, null, DateTime.Now.AddMinutes(1440), Cache.NoSlidingExpiration);
希望对您有所帮助。