VS2010缓存类如何改写为支持长尾关键词的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计462个文字,预计阅读时间需要2分钟。
csharp// .NET 4.0 重新编写缓存类(扩展)using System.Web.Caching;
public class InMemoryOutputCacheProvider : OutputCacheProvider{ public override void Add(string key, object value, DateTime absoluteExpiration, CacheDependency dependency, CacheItemPriority priority, int SlidingExpiration) { // 实现添加缓存逻辑 }
public override object Get(string key) { // 实现获取缓存逻辑 return null; }
public override void Remove(string key) { // 实现移除缓存逻辑 }
public override void RemoveByPattern(string pattern) { // 实现按模式移除缓存逻辑 }
public override void Set(string key, object value, DateTime absoluteExpiration, CacheDependency dependency, CacheItemPriority priority, int SlidingExpiration) { // 实现设置缓存逻辑 }}
//.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="*" %>
本文共计462个文字,预计阅读时间需要2分钟。
csharp// .NET 4.0 重新编写缓存类(扩展)using System.Web.Caching;
public class InMemoryOutputCacheProvider : OutputCacheProvider{ public override void Add(string key, object value, DateTime absoluteExpiration, CacheDependency dependency, CacheItemPriority priority, int SlidingExpiration) { // 实现添加缓存逻辑 }
public override object Get(string key) { // 实现获取缓存逻辑 return null; }
public override void Remove(string key) { // 实现移除缓存逻辑 }
public override void RemoveByPattern(string pattern) { // 实现按模式移除缓存逻辑 }
public override void Set(string key, object value, DateTime absoluteExpiration, CacheDependency dependency, CacheItemPriority priority, int SlidingExpiration) { // 实现设置缓存逻辑 }}
//.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="*" %>

