2011-10-06 70 views
3

我在ASP.NET 4.0 Webforms應用程序(IIS 7.5)上使用了一個非常簡單的outputcache指令,該指令緩存頁面1小時。應用程序沒有任何內存壓力,但頁面在一小時之前過期。我創建了一個簡單地寫出DateTime.Now來確認行爲的測試頁面。OutputCache在持續時間之前過期

它確實出現,只要我繼續刷新它保持緩存(大部分)的頁面,但如果我停止請求它幾分鐘並返回日期時間戳記更改。我見過其他一些人發佈類似的問題,但沒有答案。我認爲這與某些地方的某種配置或優化設置有關,在這種情況下,早於持續時間的IIS很少從緩存中訪問頁面,但似乎無法找到任何記錄。

<%@頁面語言= 「C#」 的MasterPageFile = 「Default.Master」 AutoEventWireup = 「真」 名稱= 「測試」 %> <%@的OutputCache持續時間= 「3600」 位置= 「任意」的VaryByParam = 「*」 %>

<%= DateTime.Now%>

+0

如果沒有母版頁,問題是否仍然存在? – James

回答

0

你有輸出緩存設置父頁面上或在任何其他控件頁面?

此外,您的應用程序池在它關閉之前會被設置爲閒置多久?如果您的應用程序池回收,那麼您的緩存將被重置。

Caching Portions of an ASP.NET Page

你也應該知道,當在Web窗體頁面,也有輸出 緩存設置存在與 輸出緩存設置的用戶控件會發生什麼。如果頁面輸出緩存持續時間比控制輸出緩存持續時間的用戶長,則頁面輸出緩存持續時間爲對整個頁面有效的 ,包括用戶控制。對於 示例,如果頁面輸出緩存設置爲100秒,並且控制輸出緩存的用戶 設置爲50秒,則整個頁面將在輸出緩存中保存 100秒,而不管用戶控件的較短設置爲 。以下示例演示了這一點。

+0

我給出的示例基本上是它,沒有嵌套控件,只是一個頁面,帶有指令和DateTime.Now。 – JNappi

0

我有一個類似的問題,Web.config中增加percentagePhysicalMemoryUsedLimit似乎已經修復它。以前在25%,OutputCache每分鐘左右重置。

<system.web><caching> 
    <cache privateBytesLimit="0" privateBytesPollTime="00:02:00" 
      percentagePhysicalMemoryUsedLimit="50" /> 
相關問題