我这组你提供个缓存的工具类:
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种操作。楼主可以分离下我上面的代码就明白了。
http://msdn.microsoft.com/zh-cn/library/aa478965.aspx
最好的办法是参照一下petShop这个开源项目的设置, 你用petshop去百度一下, 下载来看看
从以下三个方面着手:
页面级输出缓存
片段缓存,用户控件输出缓存
缓存 API,使用 Cache 对象