首页 新闻 搜索 专区 学院

怎样在asp.net中使用缓存

0
悬赏园豆:40 [已解决问题] 解决于 2010-03-09 11:42

我使用asp.net要写网站,使用三层结构,要用到缓存技术,是要对从数据库中读取的数据进行缓存,但是不知道具体的用法,有哪位知道来帮帮忙,多谢!!!

< >
分享
最佳答案
0

我这组你提供个缓存的工具类:

 

 

代码
1 public class GoodsCacheHelper
2 {
3 private readonly static System.Web.HttpRuntime.Cache cache = System.Web.HttpRuntime.Cache;
4
5 public delegate void UpdateGetDataHandle<T>(UpdateDataEventArgs<T> data);
6
7 /// <summary>
8 /// 根据KEY清除缓存
9 /// </summary>
10 /// <param name="strCacheKey"></param>
11   public static void ClearCache(string strCacheKey)
12 {
13 cache.Remove(strCacheKey);
14 }
15
16 /// <summary>
17 /// 根据KEY获取缓存中的数据
18 /// </summary>
19 /// <typeparam name="T"></typeparam>
20 /// <param name="strCacheKey"></param>
21 /// <returns></returns>
22   public static T GetData<T>(string strCacheKey)
23 {
24 return (T)cache.GetData(strCacheKey);
25 }
26
27 /// <summary>
28 /// 根据KEY获取缓存中的数据,如果对应KEY没有数据则保存updateHandel中返回的数据到缓存
29 /// </summary>
30 /// <typeparam name="T"></typeparam>
31 /// <param name="strCacheKey"></param>
32 /// <param name="updateHandel"></param>
33 /// <returns></returns>
34   public static T GetData<T>(string strCacheKey, UpdateGetDataHandle<T> updateHandel)
35 {
36 var obj = cache.GetData(strCacheKey);
37 if (obj == null)
38 {
39 var updateDataEventArgs = new UpdateDataEventArgs<T>();
40 updateHandel(updateDataEventArgs);
41 SaveData(strCacheKey, updateDataEventArgs.Data);
42 obj = cache.GetData(strCacheKey);
43 }
44 return (T)obj;
45 }
46
47 /// <summary>
48 /// 保存数据到缓存
49 /// </summary>
50 /// <typeparam name="T"></typeparam>
51 /// <param name="strCacheKey"></param>
52 /// <param name="data"></param>
53   public static void SaveData<T>(string strCacheKey, T data)
54 {
55 ClearCache(strCacheKey);
56 cache.Add(strCacheKey, data);
57 }
58
59 public class UpdateDataEventArgs<T> : EventArgs
60 {
61 public string DataKey { get; set; }
62 public T Data { get; set; }
63
64 public UpdateDataEventArgs()
65 : base()
66 {
67
68 }
69 }
70  

 

用法如下:

代码
public IList<GoodsType> GetGoodsType(byte? intGoodsTypeID, string strGoodsTypeName)
{
return GoodsCacheHelper.GetData<IList<GoodsType>>(CACHEKEY_GOODS_GOODSTYPE, (e) =>
{
//从数据库里(DLL)取数据
e.Data = goodsData.GetGoodsType(intGoodsTypeID, strGoodsTypeName);
});
}

 

总结:

Asp.net 内置的缓存是静态类System.Web.HttpRuntime.Cache

缓存主要有保存数据,获取数据,移除数据3种操作。楼主可以分离下我上面的代码就明白了。

 

收获园豆:40
齐.net | 小虾三级 |园豆:1421 | 2010-03-08 16:47
当然,您还可以使用MS企业库的缓存,或者自己实现缓存类。
齐.net | 园豆:1421 (小虾三级) | 2010-03-08 16:49
其他回答(5)
0

http://msdn.microsoft.com/zh-cn/library/aa478965.aspx

邀月 | 园豆:25375 (高人七级) | 2010-03-08 16:33
0

楼上的链接很详尽,如果没时间读完的话,这里给你两篇简短的ASP.NET Cache缓存的使用C#中Cache的使用

西越泽 | 园豆:10633 (专家六级) | 2010-03-08 16:52
0

最好的办法是参照一下petShop这个开源项目的设置, 你用petshop去百度一下, 下载来看看

风浪 | 园豆:2866 (老鸟四级) | 2010-03-08 17:10
0
生鱼片 | 园豆:5757 (大侠五级) | 2010-03-08 17:17
0

从以下三个方面着手:

页面级输出缓存
片段缓存,用户控件输出缓存

缓存 API,使用 Cache 对象

风影极光 | 园豆:1573 (小虾三级) | 2010-03-09 08:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册