2012-10-10 26 views
4
_cache.Insert(cacheKey, userList, null, 
Cache.NoAbsoluteExpiration, 
new TimeSpan(0, 15, 0), 
CacheItemPriority.High, null); 

我上面的代碼似乎沒有在3分鐘後過期緩存,userList對象從數據庫中提取數據並更新,但緩存在15分鐘後不會過期。下面的緩存項目會在15分鐘後過期嗎?

出了什麼問題?

回答

5

您正在通過使用Cache.NoAbsoluteExpiration明確地將緩存設置爲永不過期。你想用Cache.NoSlidingExpiration代替:

使用時,此字段設置slidingExpiration參數到 TimeSpan.Zero領域,它具有零恆定值。緩存的 項目將根據與InsertAdd方法調用相關聯的absoluteExpiration參數 到期。

+0

到期了,我發現這混亂的B/C的方法調用的簽名要你同時插入絕對和滑動倍。它不是一個或另一個? – loyalflow

+0

我認爲,如果頁面的緩存值更長,頁面的緩存可能會影響控件緩存,這可能是相關的。 – MisterIsaak

3

你傳入15分鐘,以滑動過期參數:http://msdn.microsoft.com/en-us/library/05kd8d77.aspx

插入的對象的最後訪問的時間與該對象過期的時間之間的時間間隔。如果此值相當於20分鐘,則該對象將在上次訪問後20分鐘過期並從緩存中刪除。如果使用滑動過期,則absoluteExpiration參數必須爲NoAbsoluteExpiration。

如果您的緩存對象每隔15分鐘訪問一次,它將永遠不會過期。

_cache.Insert(
     cacheKey, 
     userList, 
     null, 
     new TimeSpan(0, 15, 0), 
     Cache.NoSlidingExpiration, 
     CacheItemPriority.High, 
     null); 

現在該項目將在15分鐘內

調用插入時