2011-06-20 35 views
4

我是創建應用程序菜單的部分頁面。我使用renderaction調用菜單局部視圖。我想這樣做具有部分頁面的客戶端上的Outputcache屬性'

[OutputCache(Duration=7200, Location =OutputCacheLocation.Client, NoStore= true)] 

在客戶端這部分頁面保存,但我發現了以下錯誤

OutputCacheAttribute for child actions only supports Duration, VaryByCustom, and VaryByParam values. Please do not set CacheProfile, Location, NoStore, SqlDependency, VaryByContentEncoding, or VaryByHeader values for child actions 

任何替代這個

+0

從屬性中刪除'NoStore'。 –

回答

2

客戶端緩存是不可能的諧音在MVC 3中。客戶端瀏覽器只接收HTML,'partials'只存在於服務器端。

爲什麼不使用服務器端緩存?

當菜單的內容取決於用戶時,可以將相關的用戶信息添加到您的子操作的參數中。例如:

[OutputCache(Duration=7200, VaryByParam="*")] 
public PartialViewResult Menu(int userId) 
{ 
    ... 
} 
+1

這不會在服務器上佔用太多內存嗎?這將在2小時範圍內生成與活動用戶一樣多的實例。不確定,但我想這將存儲實際的HTML內存不只是一些變量,所以空間會更大。 –

+0

這不是一個實際的解決方案。您可能希望在每個頁面的頂部顯示歡迎消息以及用戶名。即使你可以添加一個指定用戶的參數,爲成千上萬的用戶保存輸出內存也不是一個明智的舉動。 – SepehrM