Asp.net System.Web.Caching.Cache不';你似乎没有按时恢复精力?
我正在我的网站使用的程序集中使用Asp.net System.Web.Caching.Cache不';你似乎没有按时恢复精力?,asp.net,caching,system.web.caching,Asp.net,Caching,System.web.caching,我正在我的网站使用的程序集中使用System.Web.Caching.Cache。 我已经将一些密钥过期(绝对过期)设置为10秒(仅用于调试)。 我还设置了移除密钥时的回调 问题是,我看到缓存在大约20秒而不是10秒后被刷新 我正在为此使用HttpRuntime.Cache 有没有关于为什么会发生这种情况的建议 我想展示一个代码示例,它可以提供更多信息: public void OnUpdate(string key , CacheItemUpdat
System.Web.Caching.Cache
。
我已经将一些密钥过期(绝对过期)设置为10秒(仅用于调试)。
我还设置了移除密钥时的回调
问题是,我看到缓存在大约20秒而不是10秒后被刷新
我正在为此使用HttpRuntime.Cache
有没有关于为什么会发生这种情况的建议
我想展示一个代码示例,它可以提供更多信息:
public void OnUpdate(string key
, CacheItemUpdateReason reason
, out object expensiveObject
, out CacheDependency dependency
, out DateTime absoluteExpiration
, out TimeSpan slidingExpiration)
{
using (StreamWriter sw = new StreamWriter(@"C:\temp\foo.txt",true))
{
sw.WriteLine("Updated Cache at " + DateTime.UtcNow);
}
expensiveObject = 11;
dependency = null;
absoluteExpiration = DateTime.UtcNow.AddSeconds(3);
slidingExpiration = Cache.NoSlidingExpiration;
}
protected void Page_Load(object sender, EventArgs e)
{
log.WriteInfo("Updated Cache", MethodBase.GetCurrentMethod());
Page.Cache.Insert("foo", (object)11, null, DateTime.UtcNow.AddSeconds(10), Cache.NoSlidingExpiration, new CacheItemUpdateCallback(OnUpdate));
}
在这里,我使用了Page.Cache
。更新应每3秒进行一次。实际上,每40秒执行一次,如下打印输出所示:
于2011年1月28日凌晨1:38:20更新缓存
2011年1月28日凌晨1:38:40更新缓存
2011年1月28日凌晨1:39:00更新缓存
2011年1月28日凌晨1:39:20更新缓存
2011年1月28日凌晨1:39:40更新缓存
2011年1月28日凌晨1:40:00更新缓存
2011年1月28日凌晨1:40:20更新缓存
2011年1月28日凌晨1:40:40更新缓存
2011年1月28日凌晨1:41:00更新缓存
2011年1月28日凌晨1:41:20更新缓存
2011年1月28日凌晨1:41:40更新缓存
2011年1月28日凌晨1:42:00更新缓存
2011年1月28日凌晨1:42:20更新缓存
2011年1月28日凌晨1:42:40更新缓存
可能是什么问题?内部缓存过期计时器每20秒触发一次
我反映到System.Web.Caching.CacheExpires
但后来发现已经是这样了
您可以使用在库中实现的PCache类。很好的一点是,关于这个课程,免费版没有限制。它有许多功能,远远优于System.Web.Caching.Cache类
此外,链接上还有一个示例项目。您可以使用PCache将TimerInterval更改为6秒 你能发布你的缓存吗statement@djeeg:我刚刚在示例代码中添加了问题。你看,上帝保佑你!我的朋友!你为了试验那件事已经下了一整晚的决心。这正是我一直在寻找的答案。奇怪的是,他们没有在文档上写下这一点。例如,当我们确实需要在50秒后更新项目时,我们可以做什么?基本上,你所说的(我已经阅读了你推荐的)是我们必须以20秒的倍数处理缓存?比如:20、40、60等等?