SQL缓存依赖项:轮询特定时间

时间:2013-03-04 13:43:24

标签: asp.net outputcache

我们希望通过引入输出缓存来提高WCF服务的性能。

对于每个不同的URL(varyByParam="none" varyByCustom="RawUrl"),只要数据库表FooBar没有更改,我们就要缓存结果。

但是,我们只想每天检查一次此类更改(上午6:20)。如果表在白天更改,我们不希望缓存在第二天早上6:20清除。

我们知道这会导致输出不一致,但是,在我们的应用场景中,这不是问题。

如何告诉outputCache仅在每天早上6:20检查更改?

2 个答案:

答案 0 :(得分:1)

我认为您可以使用How to: Cache Versions of a Page Using Parameters中描述的Response.Cache.SetExpires方法。

代码如下:

var tomorrow = DateTime.Today.AddDays(1);
Response.Cache.SetExpires(new DateTime(tomorrow.Year, tomorrow.Month, tomorrow.Day, 6, 20, 0, DateTimeKind.Local)
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetValidUntilExpires(true);
Response.Cache.SetVaryByCustom("RawUrl")

答案 1 :(得分:1)

将IIS应用程序池设置为每天早上6:20重置,而不是将其作为代码解决方案。

有些浏览器会忽略上面建议的HTTP Cache标头。