前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Enterprise Library 4.1学习笔记8----缓存应用程序块之FileDependency

Enterprise Library 4.1学习笔记8----缓存应用程序块之FileDependency

作者头像
菩提树下的杨过
发布2018-01-23 10:35:15
4890
发布2018-01-23 10:35:15
举报

写入缓存数据时如果使用了FileDependency方式,最终的效果会让缓存是否过期依赖于某一个具体的文件,只要这个文件没有修改,缓存一直

有效,反之如果这个文件被修改过了,则缓存立即过期。

个人认为,这种方式特别适合一些极少修改的数据(比如系统中的数据字典),而且相对用绝对时间(或是时间周期)让缓存过期,更能减轻数据

库压力,毕竟如果用时间做判断,时间点一到,就得重新从数据库里查询数据(不管数据有没有被修改)。

应用场合:某些基础数据几乎极少修改,可能一个月还改不到一回,这时我们可以考虑FileDependency,数据修改后,只要想办法把依赖的文件内容随便改一下就Ok了(人工修改或代码修改某个文件内容都很方便实现)

示例代码:

代码语言:js
复制
 1 using System;
 2 using System.Collections.Generic;
 3 using Microsoft.Practices.EnterpriseLibrary.Caching;
 4 using Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;
 5 
 6 
 7 namespace CacheTest
 8 {
 9 
10  /// <summary>
11  /// 定义要缓存的实体类
12  /// </summary>
13  public class Test
14     {
15  public string DateTime { set; get; }       
16     }
17 
18 
19  public partial class _Default : System.Web.UI.Page
20     {
21  const string KEYNAME = "myDate";//缓存的键值
22 
23         ICacheManager cacheManager;
24 
25  protected void Page_Load(object sender, EventArgs e)
26         {
27  if (!IsPostBack)
28             {
29                 cacheManager = CacheFactory.GetCacheManager();//实例化ICachemanager
30  this.R1.DataSource = GetCacheData();
31  this.R1.DataBind();
32             }
33         }
34 
35  
36 
37  /// <summary>
38  /// 获取缓存数据
39  /// </summary>
40  /// <returns></returns>
41  public List<Test> GetCacheData()
42         {
43             List<Test> _cacheData = cacheManager.GetData(KEYNAME) as List<Test>;
44 
45  if (null == _cacheData)//记得一定要加此判断(因为缓存可能过期)
46             {
47  //如果缓存数据为空,则重新生成数据,并加入缓存
48                 _cacheData = new List<Test>{ 
49  new Test(){DateTime=DateTime.Now.ToString("yyyyMMddhhmmssffff")}            
50                 };
51                 FileDependency _fileDep = new FileDependency("R:\\1.txt");//指定缓存依赖于某一文件
52                 cacheManager.Add(KEYNAME, _cacheData, CacheItemPriority.Normal, null, _fileDep);
53             }
54 
55  return _cacheData;
56         }
57 
58     }
59 }
60 

前台aspx页:

代码语言:html
复制
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CacheTest._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
</head>
<body>
     <form id="form1" runat="server">
 
    <asp:Repeater ID="R1" runat="server" EnableViewState="false">
        <HeaderTemplate>
            <ul>
        </HeaderTemplate>
        <ItemTemplate>
            <li><%# Eval("DateTime") %></li>
        </ItemTemplate>
        <FooterTemplate>
            </ul>
        </FooterTemplate>
    </asp:Repeater>
    </form>
</body>
</html>

测试方法: 打开页面,会显示一串数字,刷新后仍然不变(说明已经缓存了)。 然后打开r:\1.txt,随便修改一点东西,然后保存,再次刷新页面,显示内容变了,说明缓存过期,重新写入新缓存,再次刷新,页面内容不变,说明缓存未过期。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2009-06-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档