0

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

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

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

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

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

4

2 回答 2

1

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

某些浏览器会忽略上面建议的 HTTP 缓存标头。

于 2013-09-16T21:41:14.397 回答
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")
于 2013-03-06T22:09:20.747 回答