- 浏览: 81987 次
- 性别:
- 来自: dg
文章分类
- 全部博客 (70)
- [随笔分类]DB(数据库) (18)
- c# (1)
- 实用参考代码 (1)
- 默认收藏夹 (9)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (1)
- xml&web服务 (1)
- [随笔分类]Asp.net (18)
- C# BLOG (1)
- 技术仓库 (0)
- .net (1)
- 编程技巧 (1)
- [随笔分类].Net Framework (1)
- [随笔分类]程序人生(非技术) (1)
- [随笔分类]其他技术类 (1)
- [随笔分类]WAP (1)
- 收藏夹 (1)
- 其他 (1)
- DotNet技术 (4)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (4)
- [网站分类]7.提问区(建议在<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>中提问) (2)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (1)
- [随笔分类]Javascript & Css & Html (1)
最新评论
ASP.NET 提供一个功能完整的缓存引擎,页面可使用该引擎通过 HTTP 请求存储和检索任意对象.
缓存的生存期与应用程序的生存期相同,也就是说,当应用程序重新启动时,将重新创建缓存。
将数据添加到缓存中
1。通过指定其键和值将项添加到缓存中
Cache["txt"] = "a";
2.通过使用 Insert(重载Insert方法)方法将项添加到缓存中
Cache.Insert("txt", "a");
下列代码显示如何设置相对过期策略。它插入一个项,该项自上次访问后 10 分钟过期。注意 DateTime.MaxValue 的使用,它表示此项没有绝对过期策略。
DateTime absoluteExpiration=DateTime.MaxValue;
TimeSpan slidingExpiration=TimeSpan.FromMinutes(10);
Cache.Insert("txt", "a",null,
absoluteExpiration,slidingExpiration,
System.Web.Caching.CacheItemPriority.High,null);
3.使用 Add 方法将项添加到缓存中
Add 方法与 Insert 方法具有相同的签名,但它返回表示您所添加项的对象
DateTime absoluteExpiration=DateTime.MaxValue;
TimeSpan slidingExpiration=TimeSpan.FromMinutes(10);
Object Ojb=(string)Cache.Add("txt","a",null,
absoluteExpiration ,slidingExpiration ,
System.Web.Caching.CacheItemPriority.High,null);
string str=(string)Ojb ;
Response.Write(str);
结果显示是"a"
Add 方法使用上没有Insert 方法灵活,使用Add 方法时必须提供7个参数,Insert 方法重载4次,我们可以根据需要选择适当重载方法
从缓存中取得数据
方式1:
string str=(string)Cache.Get("txt");
Response.Write(str);
方式2:
string str1=(string)Cache["txt1"];
Response.Write(str1);
查看Cache中所有数据
System.Text.StringBuilder sb=new System.Text.StringBuilder("",100);
foreach(DictionaryEntry Caches in Cache)
{
sb.Append("key=").Append(Caches.Key.ToString()).Append("<br>") ;
sb.Append("value=").Append(Caches.Value.ToString()).Append("<br>");
}
Response.Write(sb.ToString());
查看Cache中的项数
int Count=Cache.Count;
Response.Write(Count.ToString());
将数据从缓存中删除
Cache.Remove("txt");
使Cache具有文件依赖项或键依赖项的对象
我们在一页面建立1个按钮,查看CACHE是否存在
在窗体启动时我们创建CACHE,名称="txt2",数值=数据集ds
该CACHE与myfile.xml相关联,当myfile.xml文件变化时,txt2CACHE就被自动删除
private void Page_Load(object sender, System.EventArgs e)
{
if( !IsPostBack )
{
string FilePath=MapPath("myfile.xml");
SqlConnection con=new SqlConnection("Uid=sa;database=pubs;");
SqlDataAdapter da =new SqlDataAdapter("select * from authors",con);
DataSet ds=new DataSet();
da.Fill(ds);
System.Web.Caching.CacheDependency CacheDependencyXmlFile=new System.Web.Caching.CacheDependency(FilePath);
Cache.Insert("txt2",ds ,CacheDependencyXmlFile);
}
}
为了监视pubs数据库authors表的变化
我们可以在pubs数据库authors表建立触发器
一旦authors表中发生增加,删除,修改数据时,触发器会自动修改文件myfile.xml
一旦myfile.xml文件变化,txt2CACHE就被系统自动删除
CREATE TRIGGER tr_authors
ON authors
FOR INSERT, UPDATE ,delete
AS
declare @cmd nvarchar(4000)
select @cmd='bcp "select convert(nvarchar(30),Getdate(),13)" queryout D:\cache\WebCache\myfile.xml -c -Sglc2403 -Usa -P'
exec master..xp_cmdshell @cmd
GO
private void QueryButton_Click(object sender, System.EventArgs e)
{
if ( Cache["txt2"]!=null)
{
Response.Write("exists");
}
else
{
Response.Write("not exists");
}
}
首先我们点按钮,显示Cache["txt2"]存在
现在我们去表authors中任意修改一数据,再点按钮,显示Cache["txt2"]不存在拉
以上我们是把CACHE是和一个文件相关联,我们还可以把CACHE和文件组关联,建立依赖
以下我们把CACHE和2个文件(myfile.xml,myfile1.xml)关联,一旦文件组中其中任意一文件变化,Cache会把"txt2"项的数据从CACHE中删除
string[] FilePath=new String[]{MapPath("myfile.xml"),MapPath("myfile1.xml")};
System.Web.Caching.CacheDependency CacheDependencyXmlFile=new System.Web.Caching.CacheDependency(FilePath);
string CacheVaule="a";
Cache.Insert("txt2", CacheVaule ,CacheDependencyXmlFile);
缓存依赖可以是文件,还可以是其他对象的键
下面的代码说明缓存Cache["txt2"]既依赖文件myfile.xml,又依赖缓存中的Cache["txt"],只要这2者任意一样改变,缓存Cache["txt2"]就会清除
Cache["txt"] = "b";
string[] FilePath=new String[]{ MapPath("myfile.xml")};
string[] dependencyKey=new String[]{"txt"};
SqlConnection con=new SqlConnection("Uid=sa;database=pubs;");
SqlDataAdapter da =new SqlDataAdapter("select * from authors",con);
DataSet ds=new DataSet();
da.Fill(ds);
System.Web.Caching.CacheDependency CacheDependencyXmlFile=
new System.Web.Caching.CacheDependency(FilePath,dependencyKey);
Cache.Insert("txt2",ds ,CacheDependencyXmlFile);
缓存绝对过期
缓存Cache["txt3"] 在1小时后自动过期
DateTime absoluteExpiration =DateTime.Now.AddHours(1);
Cache.Insert("txt3","aa",null,absoluteExpiration,System.Web.Caching.Cache.NoSlidingExpiration);
缓存相对(滑动)过期
注意:如果创建的弹性到期时间小于零或大于一年,则将引发异常
缓存Cache["txt4"] 在最后一次被访问后1小时自动过期
TimeSpan slidingExpiration=TimeSpan.FromHours(1);
Cache.Insert("txt4","4",null,System.Web.Caching.Cache.NoAbsoluteExpiration,slidingExpiration);
缓存项的优先等级
当承载 ASP.NET 应用程序的 Web 服务器缺少内存时,Cache 将有选择地清除项来释放系统内存。当向缓存添加项时,可以为其分配与缓存中存储的其他项相比较的相对优先级。在服务器处理大量请求时,分配了较高优先级值的项被从缓存删除的可能性较小,而分配了较低优先级值的项则更有可能被删除。
由CacheItemPriority 枚举表示,默认为 Normal。
缓存Cache["txt5"]优先等级设为最高等级,在服务器释放系统内存时,该缓存项最不可能被删除。
Cache.Insert("txt5","5",null,
System.Web.Caching.Cache.NoAbsoluteExpiration,
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.High,null);
缓存项时通知应用程序的回调方法
ASP.NET 提供 CacheItemRemovedCallback 委托。它定义编写事件处理程序时使用的签名,当从缓存中删除项时,该事件处理程序将进行响应。
static System.Web.Caching.CacheItemRemovedReason reason;
System.Web.Caching.CacheItemRemovedCallback onRemove = null;
public void RemovedCallback(String k, Object v, System.Web.Caching.CacheItemRemovedReason r)
{
itemRemoved = true;
reason = r;
}
onRemove = new System.Web.Caching.CacheItemRemovedCallback (this.RemovedCallback);
Cache.Insert("txt",ds,null,
System.Web.Caching.Cache.NoAbsoluteExpiration,
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.Default,onRemove);
由于任何原因从Cache中移除时,将调用 RemovedCallback 方法
发表评论
-
图片问题?
2004-06-12 00:58 644图片问题? 例如我有一个ASP.NET工程在目录C:\BBS下 ... -
用Javascript在客户端实现遍历datagrid,DataList控件,像MSN中的全选
2004-07-04 21:56 1455刚刚看了..NET中遍历DataList控件,像MSN中的全选 ... -
ASP.NET状态管理之一(概括篇)
2004-07-14 00:50 670每次将网页发送到服务器时,都会创建网页类的一个新实例。在传统的 ... -
ASP.NET状态管理之二(查询字苻串QueryString)
2004-07-14 01:25 826查询字苻串是追加在URL后的数据(也是我常用的)例如:http ... -
ASP.NET状态管理之三(隐藏域HiddenField)
2004-07-14 01:50 2243ASP.NET 允许您将信息存储在 HiddenFiel ... -
ASP.NET状态管理之四(暂存状态HttpContext.Items)
2004-07-14 17:47 1073ASP.NET提供一个类System.Web.HttpCont ... -
ASP.NET状态管理之七(其他物理数据存放媒体)
2004-07-15 23:25 634ASP.NET状态存储还可以存放在数据库,XML文件,文本文件 ... -
Web.config文件中</appSettings>节点的配置数值读取的2种方法,哪种更快?
2004-10-18 09:37 2411<appSettings> <add key ... -
准备精读开源的.NET代码,希望能坚持
2004-12-08 12:53 1018近来无事,把开源的.NET全部找出来,准备精读。 阅读同时想把 ... -
代码阅读总结之ASP.NET StartKit Commerce
2004-12-20 16:47 844ASP.NET StartKit Commerce简单 ... -
asp.net能实现身份认证的EMAIL发送方法(c#版本)
2004-12-28 11:15 4911public void sendMail() ... -
代码阅读总结之ASP.NET StartKit TimeTracker(角色权限之捉虫笔记)
2005-01-17 14:56 684在ASP.NET StartKit TimeTracker中由 ... -
代码阅读总结之ASP.NET StartKit TimeTracker(应用程序路径之处理笔记)
2005-01-24 17:34 666在开发中我们为了整个程序目录结构清晰化,望望会建立许多不同的文 ... -
代码阅读总结之ASP.NET StartKit TimeTracker(数据绑定之困惑笔记)
2005-01-24 18:00 693以前在项目中数据绑定一直用<%# %> 今天在A ... -
Asp.net未处理异常的2种解决方式(个人总结篇)
2005-02-21 15:34 857Asp.net中引发未处理的异常时,我们怎么处理。我总结了2种 ... -
代码阅读总结之Fitch and Mather 7.0(资源文件Resource随笔)
2005-04-21 18:03 694在Fitch and Mather 7.0中利用了大量的资源文 ... -
代码阅读总结之Fitch and Mather 7.0(自定义字符串缓存页)
2005-10-18 13:29 786前段时间工作比较忙,没时间读代码,这几天有空,正好又来静读代码 ...
相关推荐
ASP.NET缓存技术是提升Web应用性能的关键策略之一,它主要分为页面输出缓存和应用程序缓存两大类。这两种缓存机制旨在减少服务器处理请求的时间,降低数据库负载,并且提高用户体验,通过存储已经生成的HTML页面或...
首先,我们要理解ASP.NET中`HttpRuntime.Cache`对象,这是所有缓存操作的核心。这个全局缓存容器可以存储任意类型的数据,并通过键值对的方式进行管理和访问。为了将静态数据放入缓存,我们通常会先创建这些数据,...
在ASP.NET中,Cache缓存是一种重要的性能优化机制,它允许开发者将经常访问的数据存储在内存中,减少对数据库或其他资源的访问,从而提高Web应用程序的响应速度。 **Cache缓存的基本概念** Cache是ASP.NET应用程序...
"充分利用ASP.NET的三种缓存提高站点性能" ASP.NET 提供了三种主要形式的缓存:页面级输出缓存、用户控件级输出缓存(或称为片段缓存)和缓存 API。输出缓存和片段缓存的优点是非常易于实现,在大多数情况下,使用...
ASP.NET 提供了多种服务端缓存管理方法,包括 Session、Application 和 Cache 对象。 * Session 对象:Session 对象用于缓存每个用户的信息。Session 能用三种方式来托管:进程内、状态服务器和 Sql 数据库。 * ...
ASP.net 页面缓存技术 输出缓存是 ASP.net 中的一种缓存技术,它允许开发者控制页面的缓存,以提高应用程序的性能。输出缓存可以将页面的输出缓存在客户端浏览器、代理服务器或 Web 服务器上,以便快速地将页面呈现...
其中,缓存机制是ASP.NET中的一个重要组成部分,它允许开发者存储经常访问的数据,从而减少对数据库或其他资源的重复查询,提升网页加载速度。然而,在某些场景下,我们可能需要禁止缓存以确保数据的实时性,比如...
ASP.NET 2.0缓存技术是微软.NET Framework 2.0版本中增强Web应用程序性能的重要工具。在ASP.NET 2.0中,缓存机制允许开发者存储经常访问的数据或计算结果,避免每次请求时重复从数据库或其他资源获取数据,从而显著...
ASP.NET状态管理是Web应用程序开发中的关键概念,它允许开发者在用户交互的不同阶段保存和恢复数据,从而提供更丰富的用户体验。在ASP.NET中,状态管理主要包括以下几种方式: 1. **视图状态(ViewState)**:这是ASP...
- 使用ASP.NET自带的Performance Monitor工具,监控Cache的命中率、移除率等指标,优化缓存策略。 - 通过`System.Web.HttpRuntime.Cache`属性,可以编程方式获取当前缓存状态。 总结来说,ASP.NET的Cache技术是一...
### 显示所有缓存与清除所有缓存:ASP.NET (C#) 在Web开发中,缓存技术被广泛应用于提高应用程序的性能...通过上述方法,我们可以有效地管理ASP.NET应用程序中的缓存,提升应用性能的同时也能灵活控制缓存的生命周期。
ASP.NET数据库缓存是提高Web应用程序性能的关键技术之一,尤其在处理大量数据查询时。在ASP.NET 2010中,它提供了高效且灵活的数据缓存机制,以减少对数据库的频繁访问,从而降低服务器负载,提升用户体验。本文将...
- ASP.NET缓存管理器会根据预设的策略(如时间、依赖关系等)决定何时清除缓存。 四、缓存策略与配置 ASP.NET提供了多种缓存策略,如基于时间、基于依赖性、基于滑动窗口等。开发者可以根据业务需求选择合适的策略...
ASP.NET 缓存技术是用于提高网站性能的关键技术之一。通过缓存数据或页面,可以显著减少数据库访问次数,从而加快响应速度,提升用户体验。本篇文章将深入探讨 ASP.NET 缓存技术的核心概念及其在实际开发中的应用。 ...
在 ASP.NET 开发过程中,高效地管理和利用缓存(cache)是提高应用程序性能的关键因素之一。本文将详细探讨 ASP.NET 中 cache 的管理方式及其应用场景。 ### 1. 什么是 ASP.NET Cache? ASP.NET Cache 是一个用于...
ASP.NET相册管理系统基于.NET Framework或.NET Core运行时环境,它提供了强大的服务器端控件、页面生命周期管理、状态管理以及自动处理HTTP请求和响应的能力。ASP.NET使用C#或VB.NET等语言编写代码,并通过编译后...
ASP.NET文件管理是一个高效且用户友好的在线文件管理系统,它为开发者提供了在Web环境中便捷地处理文件的能力。这个系统基于Microsoft的ASP.NET框架,利用其强大的功能和灵活性,为用户提供了一个安全、稳定且易于...
《跟我一起学Visual Studio 2005(7):ASP.NET状态管理》是一套全面讲解Visual Studio 2005开发环境与ASP.NET状态管理技术的教程。在这个专题中,我们将深入探讨如何在Web应用程序中有效地管理和维护用户的状态信息,...