asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET缓存概念及其应用浅析


发布日期:2024年04月11日
 
ASP.NET缓存概念及其应用浅析

ASPNET缓存概念是什么呢?通常应用程序可以将那些频繁访问的数据以及那些需要大量处理时间来创建的数据存储在内存中从而提高性能例如如果应用程序使用复杂的逻辑来处理大量数据然后再将数据作为用户频繁访问的报表返回避免在用户每次请求数据时重新创建报表可以提高效率同样如果应用程序包含一个处理复杂数据但不需要经常更新的页则在每次请求时服务器都重新创建该页会使工作效率低下

在这些情况下了解了ASPNET缓存概念之后为了帮助您提高应用程序的性能ASPNET缓存使用两种基本的缓存机制来提供缓存功能第一种机制是应用程序缓存它允许您缓存所生成的数据如 DataSet 或自定义报表业务对象第二种机制是页输出缓存它保存页处理输出并在用户再次请求该页时重用所保存的输出而不是再次处理该页

ASPNET缓存应用程序

应用程序缓存提供了一种编程方式可通过键/值对将任意数据存储在内存中使用应用程序缓存与使用应用程序状态类似但是与应用程序状态不同的是应用程序缓存中的数据是易失的即数据并不是在整个应用程序生命周期中都存储在内存中使用应用程序缓存的优点是由 ASPNET 管理缓存它会在项过期无效或内存不足时移除缓存中的项还可以配置应用程序缓存以便在移除项时通知应用程序有关更多信息请参见 缓存应用程序数据

使用应用程序缓存的模式是确定在访问某一项时该项是否存在于缓存中如果存在则使用如果该项不存在则可以重新创建该项然后将其放回缓存中这一模式可确保缓存中始终有最新的数据

ASPNET缓存应用之页输出

页输出缓存在内存中存储处理后的 ASPNET 页的内容这一机制允许 ASPNET 向客户端发送页响应而不必再次经过页处理生命周期页输出缓存对于那些不经常更改但需要大量处理才能创建的页特别有用例如如果创建大通信量的网页来显示不需要频繁更新的数据页输出缓存则可以极大地提高该页的性能可以分别为每个页配置页缓存也可以在 nfig 文件中创建缓存配置文件利用缓存配置文件只定义一次缓存设置就可以在多个页中使用这些设置

页输出缓存提供了两种页缓存模型整页缓存和部分页缓存整页缓存允许将页的全部内容保存在内存中并用于完成客户端请求部分页缓存允许缓存页的部分内容其他部分则为动态内容

部分页缓存可采用两种工作方式控件缓存和缓存后替换控件缓存有时也称为分段缓存这种方式允许将信息包含在一个用户控件内然后将该用户控件标记为可缓存的以此来缓存页输出的部分内容这一方式可缓存页中的特定内容并不缓存整个页因此每次都需重新创建整个页例如如果要创建一个显示大量动态内容(如股票信息)的页其中有些部分为静态内容(如每周总结)这时可以将静态部分放在用户控件中并允许缓存这些内容

缓存后替换与控件缓存正好相反这种方式缓存整个页但页中的各段都是动态的例如如果要创建一个在规定时间段内为静态的页则可以将整个页设置为进行缓存如果向页添加一个显示用户名的 Label 控件则对于每次页刷新和每个用户而言Label 的内容都将保持不变始终显示缓存该页之前请求该页的用户的姓名但是使用缓存后替换机制可以将页配置为进行缓存但将页的个别部分标记为不可缓存在此情况下可以向不可缓存部分添加 Label 控件这样将为每个用户和每次页请求动态创建这些控件

根据请求参数缓存页

除缓存页的单一版本外ASPNET 页输出缓存还提供了一些功能可以创建根据请求参数的不同而不同的页的多个版本

自动移除数据

出于以下原因之一ASPNET 可以从缓存中移除数据

由于服务器上的内存不足开始一个称为清理的过程

由于缓存中的项已过期

由于项的依赖项发生了更改

为了帮助管理缓存项在将项从缓存中移除时ASPNET 会通知应用程序

清理

清理是在内存不足时从缓存中删除项的过程如果某些项在一段时间内未被访问或是在添加到缓存中时被标记为低优先级则这些项会被移除ASPNET 使用 CacheItemPriority 对象来确定要首先清理的项

过期

除了清理外在缓存项过期时ASPNET 会自动从缓存中移除这些项向缓存添加项时可以按下表中的描述设置其过期时间

ASPNET缓存过期类型

可调过期

指定某项自上次被访问后多长时间过期例如可以将某项设置为自上次在缓存中被访问后 分钟过期

绝对过期

指定某项在设定的时间过期而不考虑访问频率例如可以将某项设置为在 : PM 过期或四小时后过期

依赖项

可以将缓存中某一项的生存期配置为依赖于其他应用程序元素如某个文件或数据库当缓存项依赖的元素更改时ASPNET 将从缓存中移除该项例如如果您的网站显示一份报告该报告是应用程序通过 XML 文件创建的您可以将该报告放置在缓存中并将其配置为依赖于该 XML 文件当 XML 文件更改时ASPNET会从缓存中移除该报告当代码请求该报告时代码会先确定该报告是否在缓存中如果不在代码会重新创建该报告因此始终都有最新版本的报告可用

对于ASPNET 缓存应用它支持下列描述的依赖项

键依赖项

应用程序缓存中的项存储在键/值对中键依赖项允许项依赖于应用程序缓存中另一项的键

如果移除了原始项则具有键依赖关系的项也会被移除例如可以添加一个名为 ReportsValid 的缓存项然后缓存若干个依赖于 ReportsValid 键的报告当 ReportsValid 项被移除时所有依赖于它的缓存报告同样也会从缓存中移除

文件依赖项

缓存中的项依赖于外部文件如果该文件被修改或删除则缓存项也会被移除

SQL 依赖项

缓存中的项依赖于 Microsoft SQL Server SQL Server 或 SQL Server 数据库中表的更改对于 SQL Server 缓存中的项可依赖于表中的某一行

聚合依赖项

通过使用 AggregateCacheDependency 类缓存中的项依赖于多个元素如果任何依赖项发生更改该项都会从缓存中移除

自定义依赖项

可以用您自己的代码创建的依赖关系来配置缓存中的项例如可以创建一个自定义 Web 服务缓存依赖项当调用 Web 服务得到一个特定值时该依赖项就会从缓存中移除数据

ASPNET缓存应用程序项移除通知

当项从应用程序缓存中移除时您可以收到通知例如如果有一个需要大量处理时间才能创建的项当从缓存中移除该项时您会收到通知以便可以立即替换该项这样下次请求该项时用户便不必等待处理该项

ASPNET缓存概念以及ASPNET缓存应用的相关信息就向你介绍到这里希望通过以上的叙述使你对什么是ASPNET缓存概念以及ASPNET缓存应用有所了解

上一篇:asp.net 压缩解压缩zip文件

下一篇:ASP.NET页面打印技术的总结