上一篇 | 返回目录 | 下一篇
顾名思义,本缓存的更新不是随设定的时间变化而变化的,而是根据某个文件的修改时间的改变而变化的。示例代码如下(假设缓存是依赖D盘下面的一个Text.txt文件):
文件依赖缓存
1 /// <summary>
2 /// 根据索引键值从缓存中获取对象
3 /// </summary>
4 /// <param name="cacheKey">索引键值</param>
5 /// <returns>缓存的对象</returns>
6 private static object GetObjectFromCache(string cacheKey)
7 {
8 Cache cache = HttpRuntime.Cache;
9 return cache[cacheKey];
10 }
11
12 /// <summary>
13 /// 将对象以cacheKey为索引键值添加到缓存中
14 /// </summary>
15 /// <param name="cacheKey">索引键值</param>
16 /// <param name="obj">需要缓存的对象</param>
17 private static void AddObjectToCache(string cacheKey, object obj, CacheDependency dependencies)
18 {
19 Cache cache = HttpRuntime.Cache;
20 //cache.Insert(cacheKey, obj, dependencies,
21 // Cache.NoAbsoluteExpiration,
22 // Cache.NoSlidingExpiration,
23 // CacheItemPriority.Default, null);
24 cache.Insert(cacheKey, obj, dependencies);
25 }
26
27 protected void Page_Load(object sender, EventArgs e)
28 {
29 if (!IsPostBack)
30 {
31 string cacheKey = "__test";
32
33 // 从缓存中获取
34 object obj = GetObjectFromCache(cacheKey);
35 // 缓存里没有
36 if (obj == null)
37 {
38 // 把当前时间进行缓存
39 obj = DateTime.Now;
40 if (obj != null)
41 {
42 // 依赖 D:\\Test.txt 文件的变化来更新缓存
43 CacheDependency dep = new CacheDependency("D:\\Test.txt");
44 // 添加到缓存中去
45 AddObjectToCache(cacheKey, obj, dep);
46 }
47 }
48
49 Literal1.Text = obj.ToString();
50 }
51 }
当改变文件Test.txt的时候,缓存会自动的进行更新,如果没有对Test.txt进行改动,那么缓存就一直都存在,这样的依赖性,比较适合读取站点的配置文件,只有当配置文件改了之后,才进行缓存的更新,而平时,不用去更新。不过,应该尽量使所依赖的文件不要太松散,不然管理起来是很麻烦的。
上一篇 | 返回目录 | 下一篇