我有一个网页缓存一些查询字符串值 30 秒,这样它就不会收到重复的值。我正在使用以下课程:
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 这是在带有 .NET 4.0 的 Windows Server 2008 SP1、IIS7.5 上运行的。在此期间,没有对操作系统或 IIS 应用任何更改。
有没有办法解决这个问题,如果没有,是否有更好的缓存解决方案可以在网页中使用?
先感谢您。