_cache.Insert(cacheKey, userList, null,
Cache.NoAbsoluteExpiration,
new TimeSpan(0, 15, 0),
CacheItemPriority.High, null);
我上面的代碼似乎沒有在3分鐘後過期緩存,userList對象從數據庫中提取數據並更新,但緩存在15分鐘後不會過期。下面的緩存項目會在15分鐘後過期嗎?
出了什麼問題?
_cache.Insert(cacheKey, userList, null,
Cache.NoAbsoluteExpiration,
new TimeSpan(0, 15, 0),
CacheItemPriority.High, null);
我上面的代碼似乎沒有在3分鐘後過期緩存,userList對象從數據庫中提取數據並更新,但緩存在15分鐘後不會過期。下面的緩存項目會在15分鐘後過期嗎?
出了什麼問題?
您正在通過使用Cache.NoAbsoluteExpiration
明確地將緩存設置爲永不過期。你想用Cache.NoSlidingExpiration
代替:
使用時,此字段設置
slidingExpiration
參數到TimeSpan.Zero
領域,它具有零恆定值。緩存的 項目將根據與Insert
或Add
方法調用相關聯的absoluteExpiration
參數 到期。
你傳入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分鐘內
調用插入時
到期了,我發現這混亂的B/C的方法調用的簽名要你同時插入絕對和滑動倍。它不是一個或另一個? – loyalflow
我認爲,如果頁面的緩存值更長,頁面的緩存可能會影響控件緩存,這可能是相關的。 – MisterIsaak