2013-03-04 68 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緩存標頭,如上所示。