知识大全 ASP.NET缓存概念及其应用浅析
Posted 知
篇首语:药农进山见草药,猎人进山见禽兽。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET缓存概念及其应用浅析相关的知识,希望对你有一定的参考价值。
ASP.NET缓存概念及其应用浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
ASP NET缓存概念是什么呢?通常 应用程序可以将那些频繁访问的数据 以及那些需要大量处理时间来创建的数据存储在内存中 从而提高性能 例如 如果应用程序使用复杂的逻辑来处理大量数据 然后再将数据作为用户频繁访问的报表返回 避免在用户每次请求数据时重新创建报表可以提高效率 同样 如果应用程序包含一个处理复杂数据但不需要经常更新的页 则在每次请求时服务器都重新创建该页会使工作效率低下
在这些情况下 了解了ASP NET缓存概念之后 为了帮助您提高应用程序的性能 ASP NET缓存使用两种基本的缓存机制来提供缓存功能 第一种机制是应用程序缓存 它允许您缓存所生成的数据 如 DataSet 或自定义报表业务对象 第二种机制是页输出缓存 它保存页处理输出 并在用户再次请求该页时 重用所保存的输出 而不是再次处理该页
ASP NET缓存应用程序
应用程序缓存提供了一种编程方式 可通过键/值对将任意数据存储在内存中 使用应用程序缓存与使用应用程序状态类似 但是 与应用程序状态不同的是 应用程序缓存中的数据是易失的 即数据并不是在整个应用程序生命周期中都存储在内存中 使用应用程序缓存的优点是由 ASP NET 管理缓存 它会在项过期 无效 或内存不足时移除缓存中的项 还可以配置应用程序缓存 以便在移除项时通知应用程序 有关更多信息 请参见 缓存应用程序数据
使用应用程序缓存的模式是 确定在访问某一项时该项是否存在于缓存中 如果存在 则使用 如果该项不存在 则可以重新创建该项 然后将其放回缓存中 这一模式可确保缓存中始终有最新的数据
ASP NET缓存应用之页输出
页输出缓存在内存中存储处理后的 ASP NET 页的内容 这一机制允许 ASP NET 向客户端发送页响应 而不必再次经过页处理生命周期 页输出缓存对于那些不经常更改 但需要大量处理才能创建的页特别有用 例如 如果创建大通信量的网页来显示不需要频繁更新的数据 页输出缓存则可以极大地提高该页的性能 可以分别为每个页配置页缓存 也可以在 nfig 文件中创建缓存配置文件 利用缓存配置文件 只定义一次缓存设置就可以在多个页中使用这些设置
页输出缓存提供了两种页缓存模型 整页缓存和部分页缓存 整页缓存允许将页的全部内容保存在内存中 并用于完成客户端请求 部分页缓存允许缓存页的部分内容 其他部分则为动态内容
部分页缓存可采用两种工作方式 控件缓存和缓存后替换 控件缓存有时也称为分段缓存 这种方式允许将信息包含在一个用户控件内 然后将该用户控件标记为可缓存的 以此来缓存页输出的部分内容 这一方式可缓存页中的特定内容 并不缓存整个页 因此每次都需重新创建整个页 例如 如果要创建一个显示大量动态内容(如股票信息)的页 其中有些部分为静态内容(如每周总结) 这时可以将静态部分放在用户控件中 并允许缓存这些内容
缓存后替换与控件缓存正好相反 这种方式缓存整个页 但页中的各段都是动态的 例如 如果要创建一个在规定时间段内为静态的页 则可以将整个页设置为进行缓存 如果向页添加一个显示用户名的 Label 控件 则对于每次页刷新和每个用户而言 Label 的内容都将保持不变 始终显示缓存该页之前请求该页的用户的姓名 但是 使用缓存后替换机制 可以将页配置为进行缓存 但将页的个别部分标记为不可缓存 在此情况下 可以向不可缓存部分添加 Label 控件 这样将为每个用户和每次页请求动态创建这些控件
根据请求参数缓存页
除缓存页的单一版本外 ASP NET 页输出缓存还提供了一些功能 可以创建根据请求参数的不同而不同的页的多个版本
自动移除数据
出于以下原因之一 ASP NET 可以从缓存中移除数据
由于服务器上的内存不足 开始一个称为 清理 的过程
由于缓存中的项已过期
由于项的依赖项发生了更改
为了帮助管理缓存项 在将项从缓存中移除时 ASP NET 会通知应用程序
清理
清理是在内存不足时从缓存中删除项的过程 如果某些项在一段时间内未被访问 或是在添加到缓存中时被标记为低优先级 则这些项会被移除 ASP NET 使用 CacheItemPriority 对象来确定要首先清理的项
过期
除了清理外 在缓存项过期时 ASP NET 会自动从缓存中移除这些项 向缓存添加项时 可以按下表中的描述设置其过期时间
ASP NET缓存过期类型
可调过期
指定某项自上次被访问后多长时间过期 例如 可以将某项设置为自上次在缓存中被访问后 分钟过期
绝对过期
指定某项在设定的时间过期 而不考虑访问频率 例如 可以将某项设置为在 : PM 过期 或四小时后过期
依赖项
可以将缓存中某一项的生存期配置为依赖于其他应用程序元素 如某个文件或数据库 当缓存项依赖的元素更改时 ASP NET 将从缓存中移除该项 例如 如果您的网站显示一份报告 该报告是应用程序通过 XML 文件创建的 您可以将该报告放置在缓存中 并将其配置为依赖于该 XML 文件 当 XML 文件更改时 ASP NET会从缓存中移除该报告 当代码请求该报告时 代码会先确定该报告是否在缓存中 如果不在 代码会重新创建该报告 因此 始终都有最新版本的报告可用
对于ASP NET 缓存应用 它支持下列描述的依赖项
键依赖项
应用程序缓存中的项存储在键/值对中 键依赖项允许项依赖于应用程序缓存中另一项的键
如果移除了原始项 则具有键依赖关系的项也会被移除 例如 可以添加一个名为 ReportsValid 的缓存项 然后缓存若干个依赖于 ReportsValid 键的报告 当 ReportsValid 项被移除时 所有依赖于它的缓存报告同样也会从缓存中移除
文件依赖项
缓存中的项依赖于外部文件 如果该文件被修改或删除 则缓存项也会被移除
SQL 依赖项
缓存中的项依赖于 Microsoft SQL Server SQL Server 或 SQL Server 数据库中表的更改 对于 SQL Server 缓存中的项可依赖于表中的某一行
聚合依赖项
通过使用 AggregateCacheDependency 类缓存中的项依赖于多个元素 如果任何依赖项发生更改 该项都会从缓存中移除
自定义依赖项
可以用您自己的代码创建的依赖关系来配置缓存中的项 例如 可以创建一个自定义 Web 服务缓存依赖项 当调用 Web 服务得到一个特定值时 该依赖项就会从缓存中移除数据
ASP NET缓存应用程序项移除通知
当项从应用程序缓存中移除时 您可以收到通知 例如 如果有一个需要大量处理时间才能创建的项 当从缓存中移除该项时 您会收到通知以便可以立即替换该项 这样 下次请求该项时 用户便不必等待处理该项
cha138/Article/program/net/201311/12664相关参考
ASP.NET应用中缓存Oracle数据[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!ASP
ASP.NET应用中缓存Oracle数据 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为了创建
ASP.NET应用中缓存Oracle数据[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 为
ASP.NET缓存介绍 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET缓存
ASP.NET缓存分析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 说到ASPNET缓存那就是
ASP.NET缓存简述 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以前对缓存的认识比较零碎最
ASP.NET输出缓存的移除 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASPNET输出缓存
新手基础教程:ASP.NET2.0缓存技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ASP
ASP.NET缓存:方法分析和实践示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 尽早缓存经
ASP.NET缓存方法分析和实践示例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 尽早缓存经常