我有一個可以正常工作的ascx控件。它包含在一個更大的aspx頁面中。我想把它放在片段緩存中,所以我在頂部添加了適當的CacheOutput指令。但是,現在底層aspx.cs文件的控件在第二次加載頁面時將控件變量設置爲null。我在網上發現了一些它會說會發生的地方,但我也沒有找到訪問該控件的解決方案。ASP.NET片段緩存 - 第二次控制爲空
我錯過了什麼?
另外,我可以控制它的緩存位置嗎?我可以將它緩存在瀏覽器緩存中而不是服務器上嗎?
我有一個可以正常工作的ascx控件。它包含在一個更大的aspx頁面中。我想把它放在片段緩存中,所以我在頂部添加了適當的CacheOutput指令。但是,現在底層aspx.cs文件的控件在第二次加載頁面時將控件變量設置爲null。我在網上發現了一些它會說會發生的地方,但我也沒有找到訪問該控件的解決方案。ASP.NET片段緩存 - 第二次控制爲空
我錯過了什麼?
另外,我可以控制它的緩存位置嗎?我可以將它緩存在瀏覽器緩存中而不是服務器上嗎?
問題1:輸出緩存僅將HTML結果存儲在服務器上。如果您想在用戶控件中交互或運行任何代碼,則可能無法使用完整輸出緩存。您可能希望查看較低級別的緩存,可能是數據庫或對象緩存,或者在此緩存中嵌入另一個用戶控件,該控件使用完全輸出緩存本身,但外部用戶控件不再執行此操作。
問題#2:「我可以控制它的緩存位置嗎?」如果你使用輸出緩存,那麼沒有。這總是意味着服務器上的緩存。但是,有很多不同級別的緩存。您只能在瀏覽器中緩存完整的HTTP響應:一個HTML頁面,一個CSS文件等。如果您只想在瀏覽器中緩存頁面的一部分,但使頁面的其餘部分動態顯示,則必須用某種JavaScript來做。可以是HTML5本地存儲,也可以通過具有適當緩存標頭的AJAX進行響應,或者以304 Not Modified響應進行響應。
備註:術語「片段緩存」通常在ASP.Net世界中被稱爲「部分緩存」。
SO提示:這是兩個問題,應該在未來真正作爲兩個單獨的問題提出。 此外,有很多方法可以解決您的問題。如果您提供了更多的背景知識以及您正在嘗試解決的性能問題,我們可以提供更具體的答案。