一、页面级缓存
页面顶部增加
<%@ OutputCache Duration="10" VaryByParam="none" %>
则此页面缓存时间为10秒,无参数依赖。
如果页面依赖参数进行缓存,则
<%@ OutputCache Duration="10" VaryByParam="id;name;" %>
BaryByParam是必有属性,无参数则填 none,有参数则填key值,多个参数缓存以分号隔开。
这样当页面请求时会根据参数返回相应的缓存页面,当然缓存时间依然为10秒。
二、配置文件统一配置页面缓存属性
在Web.config配置文件中,system.web标记中增加缓存配置
全局配好后,需要缓存的页面也需要进行引用
<%@ OutputCache CacheProfile="newCache" VaryByParam="none" %>
实际目的就是为了统一缓存时间,页面中依赖的参数还是需要单独设置。
三、文件缓存依赖
依赖于某个文件进行缓存,当文件内容被更改后,则更新缓存。
页面中不需要声明 OutputCache了,而是通过代码对依赖项进行修改判断,如果文件一直没有被修改,则Cache不会过期(内存不足IIS自动删除除外)。
//获取缓存的内容,缓存可存放object类型
string str = (string)HttpRuntime.Cache["nowTime"];
//如果缓存中无内容
if (String.IsNullOrEmpty(str))
{
//更新缓存
str = DateTime.Now.ToString();
//新建缓存依赖对象
//命名空间:System.Web.Caching;
//参数1:依赖的文件绝对路径,参数2:检查文件更改的最后时间
CacheDependency cdep = new CacheDependency(Server.MapPath("~/CacheRelyOn.txt"), DateTime.Now);
//插入缓存
//key值,value值,缓存依赖对象
Cache.Insert("nowTime", str, cdep);
}
四、数据库缓存依赖
以轮询的方式来查看数据库是否有数据更新,从而确定是否需要更新缓存。
首先,数据库表需要开启 SQL缓存依赖项,这里.Net Framewrok为4.0
1.开启cmd控制台,输入 “cd ..\..” 回到C盘根目录
2.输入“cd Windows\Microsoft.NET\Framework\v4.0.30319”找到目标目录,为执行此目录下的“aspnet_regsql.exe”
3.启用数据库缓存依赖项:
aspnet_regsql.exe -S localhost -E -d 数据库名 -ed --为windows身份验证
aspnet_regsql.exe -S localhost -U sa -P 123 -d 数据库名 -ed --为用户名密码验证
4.启用数据表的缓存依赖项:
aspnet_regsql.exe -S localhost -U sa -P 123 -d 数据库名 -t 表名 -et
每一个表都需要单独执行一次此命令
5.Web.config中配置好数据库连接字符串,如:
6.Web.config的
7.可以使用接口及工厂,这里只简单说一下流程代码
//获取缓存内容
string str = (string)HttpRuntime.Cache["nowTime"];
//如果缓存无内容
if (String.IsNullOrEmpty(str))
{
//更新缓存数据
str = DateTime.Now.ToString();
//创建缓存组合依赖对象
AggregateCacheDependency acdep = new AggregateCacheDependency();
//添加依赖项,参数1:配置文件中caching标记中add标记的name值,参数2:表名
acdep.Add(new SqlCacheDependency("sqlCache", "Student"));
acdep.Add(new SqlCacheDependency("sqlCache", "Teacher"));
//插入缓存
Cache.Insert("nowTime", str, acdep);
}