vs2010--缓存类

//.net 4.0  重写缓存类(拓展)
using System.Web.Caching;

public class InMemoryOutputCacheProvider : OutputCacheProvider
{  
    #region Members   
    private Dictionary<string, InMemoryOutputCacheItem> _cache = new Dictionary<string, InMemoryOutputCacheItem>();  
    private readonly static object _syncLock = new object();  
    #endregion   

    #region Methods  
    public override object Add(string key, object entry, DateTime utcExpiry) 
    {   
        Set(key, entry, utcExpiry); 
        return entry;
    }  

    public override object Get(string key) 
    {   
        InMemoryOutputCacheItem item = null;   
        if (_cache.TryGetValue(key, out item))   
        {    
            if (item.UtcExpiry < DateTime.UtcNow)   
            {     
                Remove(key);    
                return null;      
            }     
            return item.Value;   
        }    
        return null; 
    } 

    public override void Remove(string key) 
    {   
        InMemoryOutputCacheItem item = null;  
        if (_cache.TryGetValue(key, out item))  
        {     
            _cache.Remove(key); 
        } 
    }  

    public override void Set(string key, object entry, DateTime utcExpiry) 
    {  
        var item = new InMemoryOutputCacheItem(entry, utcExpiry);   
        lock (_syncLock) 
        {  
            if (_cache.ContainsKey(key))  
            {      
                _cache[key] = item;  
            }    
            else    
            {    
                _cache.Add(key, item); 
            }   
        } 
    }  

    #endregion
}



public class InMemoryOutputCacheItem
{ 
    #region Members  
 
    public DateTime UtcExpiry { get; set; }  
    public object Value { get; set; }   

    #endregion 
  
    #region Ctor   

    public InMemoryOutputCacheItem(object value, DateTime utcExpiry) 
    {   
        Value = value;   
        UtcExpiry = utcExpiry; 
    }  

    #endregion
}


//配置

        <caching>
            <outputCache defaultProvider="InMemory">
                <providers>
                    <add name="InMemory" type="InMemoryOutputCacheProvider"/>
                </providers>
            </outputCache>
        </caching>

 

//页面

<%@ OutputCache Duration="15" VaryByParam="*" %>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值