2013-03-04 66 views
0

我们希望通过引入输出缓存来提高WCF服务的性能。SQL缓存依赖关系:轮询特定时间

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

但是,我们只想每天检查一次这样的变化(上午6:20)。如果表格在一天中发生变化,我们不希望缓存在第二天上午6:20之前被清除。

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

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

回答

1

我认为你可以使用Response.Cache.SetExpires的方法,如How to: Cache Versions of a Page Using Parameters所述。

该代码将是这样的:

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") 
+0

对不起,我迟到的答复:这是否也可以在Web.config配置文件中设置? – 2013-03-27 10:55:28

+0

@ D.R。一般来说,答案是“是的,可以使用web.config配置客户端缓存”(看看这个问题http://stackoverflow.com/questions/2195266/how-to-configure-static-content-cache-per- folder-and-extension-in-iis7),但是我看不到如何使用web.config实现'仅在每天早上6:20检查更改'。或者,您可以创建一个静态类,该静态类将具有带有“Cache”输入参数的方法,并且可以在该方法中集中缓存配置。 – 2013-03-27 14:25:42

0

设置你的IIS应用程序池在每天早上6:20重置,而不是使之成为一个代码解决方案。

有些浏览器会忽略HTTP缓存标头,如上所示。