我们希望通过引入输出缓存来提高WCF服务的性能。
对于每个不同的URL(varyByParam="none" varyByCustom="RawUrl"
),只要数据库表FooBar没有更改,我们就要缓存结果。
但是,我们只想每天检查一次此类更改(上午6:20)。如果表在白天更改,我们不希望缓存在第二天早上6:20清除。
我们知道这会导致输出不一致,但是,在我们的应用场景中,这不是问题。
如何告诉outputCache仅在每天早上6:20检查更改?
答案 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标头。