2011-05-25 69 views
1

我還沒有找到任何東西,所以我不相信我想要的是可能的。我想在每次訪問時重置高速緩存變量的滑動過期。asp.net webservice緩存延長到期

public class MyCache 
{ 
public static object CachedItem 
{ 
    get 
    { 
     string key = "item11"; // users share the object at this key 
     object o = Cache[key]; 

     //re-set the timer janky way 
     //triggers callback, which I dont want 
     o = (o == null) ? new object() : Cache.Remove(key); 
     Cache.Add(key, o, null, Cache.NoAbs..., new TimeSpan(0,5,0), High, Removed); 

     return o; 
    } 
} 

private static void Removed(string key, object value, CacheItemRemovedReason reason) 
{ 
    // audit MySql table 
    // no good because Cache.Remove is getting called manually a lot. 
} 
} 

實際上,緩存項目是聊天室中的消息列表。當添加消息時,我希望聊天室能夠「活得更久」。替代方法也歡迎。

+1

設計緩存對象會在每次訪問時自動重置過期。所有你應該做的就是嘗試獲取對象,如果它爲null,則使用滑動過期來設置它,如果不是null,則返回它。只要得到它,到期將被重置。 – Jay 2011-05-25 21:19:43

回答

1

設計中的緩存對象會在每次訪問時自動重置到期日。所有你應該做的就是嘗試獲取對象,如果它爲null,則使用滑動過期來設置它,如果不是null,則返回它。只要得到它,到期將被重置。 像這樣

public static object CachedItem 
{ 
    get 
    { 
     string key = "item11"; // users share the object at this key 
     object o = Cache[key]; 
     if (o == null) 
     { 
      o = {Get from some source}; 
      Cache.Add(key, o, null, Cache.NoAbs..., new TimeSpan(0,5,0), High, Removed); 
     } 

     return o; 
    } 
}