Enterprise Library 4.1学习笔记8----缓存应用程序块之FileDependency
时间:2022-04-23
本文章向大家介绍Enterprise Library 4.1学习笔记8----缓存应用程序块之FileDependency,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
写入缓存数据时如果使用了FileDependency方式,最终的效果会让缓存是否过期依赖于某一个具体的文件,只要这个文件没有修改,缓存一直
有效,反之如果这个文件被修改过了,则缓存立即过期。
个人认为,这种方式特别适合一些极少修改的数据(比如系统中的数据字典),而且相对用绝对时间(或是时间周期)让缓存过期,更能减轻数据
库压力,毕竟如果用时间做判断,时间点一到,就得重新从数据库里查询数据(不管数据有没有被修改)。
应用场合:某些基础数据几乎极少修改,可能一个月还改不到一回,这时我们可以考虑FileDependency,数据修改后,只要想办法把依赖的文件内容随便改一下就Ok了(人工修改或代码修改某个文件内容都很方便实现)
示例代码:
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页:
<%@ 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,随便修改一点东西,然后保存,再次刷新页面,显示内容变了,说明缓存过期,重新写入新缓存,再次刷新,页面内容不变,说明缓存未过期。
- 【Spark研究】用Apache Spark进行大数据处理第二部分:Spark SQL
- Android基础总结(2)——活动Activity
- Java实现的IP处理工具类——可用于项目
- 使用SQLServer同义词和SQL邮件,解决发布订阅中订阅库丢失数据的问题
- 一次误报引发的DNS检测方案的思考:DNS隧道检测平民解决方案
- Andriod基础——Adapter类
- ORM查询语言(OQL)简介--高级篇:脱胎换骨
- 用Java实现处理日期的工具类——常用日期处理方法
- ORM查询语言(OQL)简介--实例篇
- 漏洞预警 | 海洋CMS(SEACMS)0day漏洞预警
- 【机器学习】分类算法评价
- Java中图片处理工具类——能满足各种需求
- onclicklistener到底怎么用?
- 如何入侵联网智能灯泡——LIFX智能灯泡
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 网络学习笔记2——物理层基础(信号与系统)(未完待续)
- 浅谈 React 中的 XSS 攻击
- Chrome 80+ 跨域Samesite 导致的cookie not found 解决方法
- 再不迁移到Material Design Components 就out啦
- hbase 学习
- 再谈Fragment
- java线程池(四):ForkJoinPool的使用及基本原理
- 算法书中算法
- Robo3T 与 NaviCat 的安装
- 牛客网2017年校招真题-1
- 实例分割新思路之SOLO v1&v2深度解析
- 牛客网剑指offer-3
- java8新特性总结备忘
- 商业数据分析从入门到入职(6)Python程序结构和函数
- 数据科学家极力推荐核心计算工具-Numpy的前世今生(下)