📄 aspnetcacheprovider.cs
字号:
//===============================================================================
// CSDN HeyCache
//===============================================================================
// 修改记录:[按最后修改时间倒排序]
// modify: 2007.06.14 by tangwei
// create: 2007.06.11 by tangwei
//
// 代码来源:tangwei
//===============================================================================
using System;
using System.Collections.Generic;
using System.Text;
using HeyCacher.Components.Expirations;
using HeyCacher.Components;
namespace HeyCacher.Providers
{
/// <summary>
/// 封装Aspnet的缓存实现
/// </summary>
public class AspnetCacheProvider : CacheProvider
{
System.Web.Caching.Cache cacheManage;
public AspnetCacheProvider()
{
cacheManage = System.Web.HttpRuntime.Cache;
}
public override int Count
{
get
{
return cacheManage.Count;
}
}
public override bool Contains(string Key, CacheTack cacheTack)
{
return cacheManage[Key]!=null;
}
public override CacheItem GetCacheItem(string Key, CacheTack cacheTack)
{
return (CacheItem)cacheManage.Get(Key);
}
protected override object innerInsert(bool Replace, CacheItem ci, CacheTack cacheTack, out bool Insertd)
{
Insertd = false; //是否被插入
//检查缓存项是否有了,有了的话,根据Replace进行删除或者返回
if (Contains(ci.Key))
{
if (Replace)
{
Remove(ci.Key);
}
else
{
return GetCacheItem(ci.Key, null).realValue;
}
}
//转换
System.Web.Caching.CacheDependency a_CacheDependency = null;
DateTime a_AbsoluteExpiration = System.Web.Caching.Cache.NoAbsoluteExpiration;
TimeSpan a_SlidingExpiration = System.Web.Caching.Cache.NoSlidingExpiration;
for (int i = 0; i < ci.Expirations.Length; i++)
{
if (ci.Expirations[i] == null)
{
continue;
}
if (ci.Expirations[i] is Components.Expirations.AbsoluteTime)
{
a_AbsoluteExpiration = ((Components.Expirations.AbsoluteTime)ci.Expirations[i]).AbsoluteExpirationTime;
continue;
}
if (ci.Expirations[i] is Components.Expirations.SlidingTime)
{
a_SlidingExpiration = ((Components.Expirations.SlidingTime)ci.Expirations[i]).ItemSlidingExpiration;
continue;
}
if (ci.Expirations[i] is Components.Expirations.FileDependency)
{
a_CacheDependency = new System.Web.Caching.CacheDependency(((Components.Expirations.FileDependency)ci.Expirations[i]).FileName);
continue;
}
}
System.Web.Caching.CacheItemPriority a_Priority = ConvertPriority(ci.Priority);
System.Web.Caching.CacheItemRemovedCallback a_RefreshAction = null;
cacheManage.Insert(ci.Key, ci, a_CacheDependency, a_AbsoluteExpiration, a_SlidingExpiration, a_Priority, a_RefreshAction);
Insertd = true;
//判断返回
return ci.realValue;
}
public override bool Remove(string Key, CacheTack cacheTack, CacheItemRemovedReason removalReason)
{
if (cacheManage.Remove(Key) != null)
{
return true;
}
else
{
return false;
}
}
public override void Flush()
{
System.Collections.IDictionaryEnumerator ide = cacheManage.GetEnumerator();
while (ide.MoveNext())
{
System.Web.HttpRuntime.Cache.Remove(ide.Key.ToString());
}
}
internal override System.Collections.IDictionaryEnumerator CreateEnumerator()
{
return cacheManage.GetEnumerator();
}
/// <summary>
/// 转换缓存优先级
/// </summary>
/// <param name="priority"></param>
/// <returns></returns>
private System.Web.Caching.CacheItemPriority ConvertPriority(Components.CacheItemPriority priority)
{
System.Web.Caching.CacheItemPriority ResultPriority = System.Web.Caching.CacheItemPriority.Default;
try
{
ResultPriority = (System.Web.Caching.CacheItemPriority)Enum.Parse(typeof(System.Web.Caching.CacheItemPriority), priority.ToString());
}
catch { }
return ResultPriority;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -