ASP.NET--CACHE缓存
来源:互联网 发布:淘宝新店查询 编辑:程序博客网 时间:2024/04/29 03:14
ASP.NET中提供了两种缓存更新策略:
1.被动更新。缓存过期以后手动进行更新
2.主动更新。缓存过期以后在回调方法中更新
如果我们现在要缓存一个数据集:DataSet ds=getData();//getdata()是一个自定义方法,从数据库获取数据
A.插入永不过期的缓存:Cache.Insert("data",ds);
B.插入绝对时间过期缓存:Cache.Insert("data",ds,null,DateTime.now.AddSeconds(10),TimeSpan.Zero);
C.插入变化时间过期缓存:Cache.Insert("data",ds,null,DateTime.Maxvalue,TimeSpan.FromSeconds(10));
总结这三种缓存过期策略:
A:永不过期:直接复制缓存的key 和value即可
B:绝对时间过期:DateTime.Now.AddSeconds(10)表示缓存在10秒后过期,TimeSpan.Zero表示不使用平滑过期策略。
C:变化时间过期(平滑过期):DateTime.MaxValue表示不使用绝对时间过期策略,TimeSpan.FromSeconds(10)表示缓存连续10秒没有访问就过期。
Add()方法也可在cache中添加缓存,但它只能添加缓存中没有的项,如果存在将添加失败(但不会抛出异常),Insert()方法将覆盖原来的项。
另外还有一个依赖过期策略,即缓存中的依赖项(比如一个文件)的内容改变之后缓存也就失效了。例如 建立一个缓存依赖项:
CacheDependency cd = new CacheDependency(Server.MapPath("test.txt"));
DataSet ds = GetData();
Cache.Insert("Data", ds, cd); 这就添加了一个一个依赖于 test.txt文件的缓存过期策略。
cache缓存的更新策略
在Web程序中我们通常会使用被动更新。所谓被动更新,就是在调用数据的时候判断缓存是否为空,如果为空则先更新缓存然后再从缓存中读取数据,如果不为空则直接从缓存中读取数据。
可以利用缓存的回调功能让缓存过期后自动续建实现自动更新的目的。
DataSet ds = GetData();
Cache.Insert("Data", ds, null, DateTime.Now.AddSeconds(10), TimeSpan.Zero,
CacheItemPriority.Default, CacheRemovedCallback);
最后一个参数表明缓存被移除以后自动调用CacheRemovedCallback()方法。
手动移除某个缓存的方法:
Cache.Remove("Data");
如果要移除所有缓存只能通过遍历来实现:
IDictionaryEnumerator CacheEnum = HttpRuntime.Cache.GetEnumerator();
while (CacheEnum.MoveNext())
{
Cache.Remove(CacheEnum.Key.ToString());
}
cache总结
· 存储的物理位置。服务器内存。
· 存储的类型限制。任意类型。
· 状态使用的范围。当前请求上下文,所有用户共用一份。
· 存储的大小限制。任意大小。
· 生命周期。有多种过期策略控制缓存的销毁。
· 安全与性能。数据总是存储在服务端,安全性比较高,但不易存储过多数据。
· 优缺点与注意事项。检索数据速度快,过期策略丰富。注意别把对实时性要求很高的数据放到Cache中,不断更新Cache会对数据库造成压力。
主要有两种类型的缓存:
1.输出缓存Output caching
2.数据缓存Data caching
上面主要说的是数据缓存,下面说下输出缓存
1. 输出缓存(Output Caching)
使用输出缓存,你可以缓存最后输出的HTML页面,当相同的页面再次请求的时候,ASP.NET不会再执行页面的生命周期和相关代码而是直接使用缓存的页面,语法如下:<%@ OutputCache Duration=”60” VaryByParam=”None” %>
如果你的页面是通过查询字符串来获取信息的,你可以根据查询字符串很容易的缓存页面的不同拷贝。VarByParam=”None”指定ASP.NET只存储缓存页面的一个拷贝。VarByParam=”*” 指定ASP.NET根据不同的查询字符串存储不同的缓存页面。
- ASP.NET--CACHE缓存
- ASP.NET Cache缓存
- ASP.NET 缓存(Cache)
- ASP.NET Cache缓存
- ASP.NET缓存 Cache
- Cache缓存 (asp.net c#)
- ASP.NET Cache缓存详解
- ASP.Net Cache(缓存)
- Asp.Net之Cache缓存
- ASP.NET缓存 Cache之数据缓存
- Asp.Net缓存Cache使用一例
- ASP.NET 缓存(Cache)介绍
- asp.net页面缓存技术(Cache、XML)
- asp.net页面缓存技术(Cache、XML)
- asp.net页面缓存技术(Cache、XML)
- asp.net页面缓存技术(Cache、XML)
- ASP.NET 缓存(Cache)介绍
- ASP.NET 缓存(Cache)介绍
- Windows Mobile SDK例子浅析
- java实现FTP操作--上传,下载,删除文件
- 数据源不支持服务器端的数据分页
- 基于Qt4.5的Unicode字模提取工具
- flex crossdomain.xml 解决
- ASP.NET--CACHE缓存
- 引以为鉴:计算机专业毕业后大致的工作方向
- android 11.19
- 组件服务-计算机-我的电脑出现红色向下箭头的解决办法
- 出一道自己偶然想出来的JAVA题 延伸一
- Windows Server 2003 Tools
- 删除2千万条数据
- RTP:实时应用程序传输协议(中文文档)
- C#调用VC的DLL的接口函数参数类型转换一览表