2009-05-02 74 views
4

當前ASP.NET MVC的OutputCache屬性有一個巨大的垮臺。如果您想要緩存部分網站,則必須使用解決方法,因爲MVC依賴於ASP.NET管道的限制。在ASP.NET MVC中解決整個頁面緩存的方法

假設您的頁面有一個您通過RenderAction繪製的統計模塊,您不能僅僅緩存該部分的開箱即用功能。

我的問題是,你發現什麼方式來解決這個優雅和易於使用的限制?我個人發現其中2人並不特別滿意。雖然他們工作,但在他們周圍構建應用程序時似乎只是感覺不對。

解決方案1 ​​ - 副控制器 http://mhinze.com/subcontrollers-in-aspnet-mvc/

解決方案2 - 部分請求 http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

所以如果你有另一種解決方案或者甚至你使用這些解決方案的一個辦法優雅我喜歡關於設計和/或使用的一些想法。

回答

4

我已經做了這個選項2(使用Html.RenderAction)取得了相當不錯的成功。我還爲我的控制器創建了不同的基類,一個緩存,另一個沒有,因此我將所有緩存的操作放在一個地方。我不經常這樣做,因此隔離這些行爲並不算太壞。結合使用緩存和我寫的GZip壓縮過濾器,我可以從MVC中獲得相當出色的性能。

1

如何使用jQuery通過ajax加載一些區域(div等)。然後,您可以將不同區域緩存爲完整的請求,具有不同的粒度。

+0

我正在考慮這個問題,但我不希望對那些禁用javascript的用戶提供低級支持。 – 2009-05-02 20:11:39

4

在某些情況下,最好不要使用ASP.NET OutputCache功能。請使用可選的gzip壓縮在業務/服務層中使用緩存。有時這種組合比完整的輸出緩存更快。

+0

你能解釋'你在服務層中緩存'是什麼意思嗎?你的意思是你的服務層返回壓縮結果? – 2009-05-10 05:41:49