我有一些昂贵的页面,我使用 ASP.NET 输出缓存进行缓存,如下所示,
[OutputCache(Duration=3600, VaryByParam = "none")]
显然,缓存将在 3600 秒(1 小时)后过期,下一个碰巧加载该页面的可怜人将不得不等待数据库刷新缓存。
我的问题是,如何使缓存在到期时立即刷新?这样,下一个在缓存刚刚过期时访问该页面的人就不必等待缓存刷新,而是使用新的缓存来提供服务?
更新:我需要频繁更新缓存(1 小时到 3 小时),因为我也不希望数据陈旧太久。
我不认为您可以仅使用以下内容来实现您所需要的OutputCache
.
基本上你需要数据存储和工作人员。对于存储,您可以使用从静态变量到外部数据库的任何内容。
工人也是如此。它可能只是简单的长时间运行的任务或外部服务。基本示例,这样您就可以了解我在说什么
public class TestController : Controller
{
private static int _result = 0;
static TestController()
{
Task.Factory.StartNew(async () =>
{
while (true)
{
await Task.Delay(new TimeSpan(0, 0, 5));
_result++;
}
}, TaskCreationOptions.LongRunning);
}
public ActionResult Index()
{
return Json(_result, JsonRequestBehavior.AllowGet);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)