System.Web.Caching命名空间类介绍
在System.Web.Caching下的类,主要是处理web客户端的Cache
它有如下主要类:
Cache
CacheDependency
SqlCacheDependency
类比较简单直观,只是要特别说明一下Cache类的方法
Add
Insert
Remove
Get
GetType
GetEnumerator
大家是不是没有看到没有修改cache中数据的方法?也就是memcache中的set方法,用insert替代就可以了
CacheDependency类也有必要介绍
它是架设在数据和cache之间的一座桥梁,称为缓存依赖类,其意义表现在当缓存对象的实际数据发生改变时,他能及时通知缓存对象
具体用法如下
private static CacheDependency mydepen;
…………
if(Cache[XXX]==null)
{
DataSet myds=new Dataset();
myds.ReadXml(this.MapPath(Request.ApplicationPath+@"/data.xml");
mydepen=new CacheDependency(this.MapPath(Request.ApplicationPath+@"/data.xml");
Cache.Add("XXX",myds,mydepen,DataTime.Now.AddSeconds(10),TimeSpan.Zero,CacheItemPriority.Normal,null);
}
如果文件改动,dependency就会生效,然后同时把cache和dependency消除
-----------------------------------------------------------------------
Cache所在的命名空间是啥?
我的VS2008没法用Cache["key"]
是不是要包含什么命名空间么?
System.Web.Caching
using System.Web.Caching;
public sealed class Caches
{
// Methods
public Caches();
public static object Read(CacheKey Key)
{
return HttpRuntime.Cache[Key.ToString()];
}
public static void Write(CacheKey Key, object CacheValue)
{
if (HttpRuntime.Cache[Key.ToString()] == null)
{
HttpRuntime.Cache.Add(Key.ToString(), CacheValue, null, DateTime.Now.AddHours(10.0), TimeSpan.Zero, CacheItemPriority.NotRemovable, null);
}
else
{
HttpRuntime.Cache.Insert(Key.ToString(), CacheValue, null, DateTime.Now.AddHours(10.0), TimeSpan.Zero);
}
}
public static void Write(CacheKey Key, object CacheValue, CacheDependency cd)
{
if (HttpRuntime.Cache[Key.ToString()] == null)
{
HttpRuntime.Cache.Add(Key.ToString(), CacheValue, cd, DateTime.Now.AddHours(10.0), TimeSpan.Zero, CacheItemPriority.NotRemovable, null);
}
else
{
HttpRuntime.Cache.Insert(Key.ToString(), CacheValue, cd, DateTime.Now.AddHours(10.0), TimeSpan.Zero);
}
}
}