2012-03-22 32 views
0

我正在構建MVC應用程序,並希望將緩存放入我的應用程序中。我已經讀過緩存,你只需要把[OutputCache(Duration = 60,VaryByParam =「none」)]以上的控制器方法,它會工作。但在我的情況下,我想緩存不是整個控制器的方法,但內部方法將從索引控制器調用,並將返回IEnumerable<SelectListItem>,並導致我想要緩存。MVC3中非視圖方法的緩存問題

不過緩存僅用於控制器方法,這將導致景觀效果的工作,我也搜索緩存非視圖的方法和發現了一些MVCDonutCaching和閱讀this articles並通過安裝嘗試,這也按照以下

[DonutOutputCache(Duration=60, VaryByParam="none")] 
    public IEnumerable<SelectListItem> GetRegionList() 
    { 
     Region region = new Region(); 

     return region.GetRegionsList(); 
    } 

但不是運氣來實現我的目標!有沒有人在這裏完成這種類型的緩存?那麼請幫助我實現這個目標。

在此先感謝。

回答

1

我相信你的問題不是mvc本身,而是緩存模型數據。緩存控制器操作就像形成靜態頁面並將其保存在IIS緩存中一樣。每次用戶請求「Home/Index」(例如)時,IIS都會從緩存中取得格式良好的頁面(html),而不執行任何代碼。

你想要做的是緩存模型數據。這是完全不同的事情,因爲它與IIS和HTML頁面形成無關。您可以使用現有的解決方案,如: Unity應用程序塊 - http://msdn.microsoft.com/en-us/library/ff649102.aspx 或從stackexchange:https://softwareengineering.stackexchange.com/questions/35709/recommendations-for-a-net-distributed-caching-framework