2012-11-08 33 views
1

這不是工作因爲某些原因:緩存控制器,它返回一個字符串

[OutputCache(Duration = 600, VaryByParam = "id")] 
    public string GetSomeValue(int id) 
    { 
     return _service.GetSomeValue(id).ToString(); 
    } 

我在返回一個視圖控制器測試這和它的工作。

任何想法爲什麼?或任何可能的解決方法?

+0

什麼不正確? – dove

+1

它沒有緩存結果 – user441365

+0

我從另一個控制器調用該函數 – user441365

回答

1

的屬性必須被放置在行動本身沒有這種方法

[OutputCache(Duration = 600, VaryByParam = "id")] 
    Public ActionResult Get(int id) 
基於您的評論

這聽起來像你正在尋找的服務器緩存。我建議像memcached或Redis之類的東西,但同樣你可以使用內置在IIS中的緩存。請注意,如果您在網上服務器場中,則必須瞭解緩存何時應該爆發以及如何處理分發。在它最簡單的形式,你可以試試這個

public string GetSomeValue(int id) 
{ 
    var cachedItem = HttpRuntime.Cache.Get(id.ToString()); 
    if(cachedItem==null){ 
    value = _service.GetSomeValue(id).ToString(); 
    cachedItem = HttpRuntime.Cache.Add(id.ToString(), value); 
    } 
    return cachedItem; 
} 

添加的全部選項使您能夠設置一個滑動或絕對過期

public object Add(
     string key, 
     object value, 
     System.Web.Caching.CacheDependency dependencies, 
     System.DateTime absoluteExpiration, 
     System.TimeSpan slidingExpiration, 
     System.Web.Caching.CacheItemPriority priority, 
     System.Web.Caching.CacheItemRemovedCallback onRemoveCallback) 

傳入null的依賴關係的例子,但設定到期,你的機會希望。

+0

這不是我所問的。我想緩存一個返回字符串 – user441365

+0

的函數,但不能輸出緩存函數。輸出緩存是從您的web服務器完成的。聽起來像你正在尋找服務器緩存,我會更新這個答案 – dove

+0

很酷謝謝 - 有沒有辦法設置緩存的持續時間?另外,我猜這是緩存在服務器端? – user441365

相關問題