我有一個網頁緩存一些查詢字符串值爲30秒,以便它不會收到重複的值。我正在使用以下類:System.Runtime.Cache立即過期
public class MyCache {
private static ObjectCache cache = MemoryCache.Default;
public MyCache() { }
public void Insert(string key, string value)
{
CacheItemPolicy policy = new CacheItemPolicy();
policy.Priority = CacheItemPriority.Default;
policy.SlidingExpiration = new TimeSpan(0, 0, 30);
policy.RemovedCallback = new CacheEntryRemovedCallback(this.Cacheremovedcallback);
cache.Set(key, value, policy);
}
public bool Exists(string key)
{
return cache.Contains(key);
}
public void Remove(string key)
{
cache.Remove(key);
}
private void Cacheremovedcallback(CacheEntryRemovedArguments arguments)
{
FileLog.LogToFile("Cache item removed. Reason: " + arguments.RemovedReason.ToString() + "; Item: [" + arguments.CacheItem.Key + ", " + arguments.CacheItem.Value.ToString() + "]");
}
}
這工作得很好,幾個星期後突然緩存不再保留值。 CacheRemoved回調在將項目插入緩存後立即觸發,並且我找到了刪除的原因:CacheSpecificEviction 這是在Windows Server 2008 SP1,IIS7.5與.NET 4.0上運行。在此期間沒有更改應用於操作系統或IIS。
有沒有辦法解決這個問題,如果沒有,是否有更好的緩存解決方案在網頁中使用?
預先感謝您。
是否可以緩存已經達到了它的極限尺寸是多少?是否由於空間限制而刪除舊的項目? – 2013-02-15 10:27:10
看到這個帖子的解釋。 http://stackoverflow.com/questions/5380875/caching-data-net-4-0-asp-net – 2013-02-15 10:42:42