2011-02-10 106 views
0

我观察到在我的应用程序中,当用户仍在访问我的应用程序时,我的缓存没有过期。让我详细解释一下。我已将缓存设置为10秒后过期,并提到了NoAbsoluteExpiration。该代码是这样的:在Asp.net中缓存

Cache.Insert("Data", value, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromSeconds(10)); 

现在让我们说第一个用户访问该页面后,在9秒另一用户访问应用程序。在这种情况下,Cache不会在10秒内过期,并延伸到接下来的10秒。这对我们的应用程序来说是一个问题,因为如果每一秒我有一个用户访问我的网站,缓存永远不会过期。我发现只有当应用程序闲置10秒时,缓存才会过期。也就是说,如果10秒内没有击中该网站。

我该如何才能让缓存每10秒过期,无论用户是否仍在访问页面或应用程序是否空闲。

在此先感谢。

+1

如果您希望它过期,只需使用绝对过期,即'DateTime.Now.AddSeconds(10)` – NoLifeKing 2011-02-10 08:25:33

回答

2

那么使用NoSlidingExpiration而不是NoAbsoluteExpiration,并给它一个绝对到期的时间跨度。

Cache.Insert("Data", value, null, TimeSpan.FromSeconds(10), System.Web.Caching.Cache.NoSlidingExpiration);

现在你已经明确地告诉缓存做与你想要的完全相反的事情。