第09部分-数据缓存.ppt_第1页
第09部分-数据缓存.ppt_第2页
第09部分-数据缓存.ppt_第3页
第09部分-数据缓存.ppt_第4页
第09部分-数据缓存.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020年2月 数据缓存 ASP NET开发 数据缓存 授课人 黄波Email huangbo Tel 82878185QQ 569960256 授课要点 第一部分缓存概述第二部分页面输出缓存第三部分页面部分缓存第四部分缓存依赖 缓存概述 由数据库驱动的Web应用程序 若要改善其性能 最好的办法是使用缓存功能 如果能将数据库中的数据缓存到内存 也可以存储到其他场所 则无需在请求每个页面时都访问数据库 由于从内存中返回数据的速度始比新提供的数据速度快 因而可以大大提供应用程序的性能 缓存有个不太容易克服的缺点 数据过期问题 例如 数据缓存到内存中后 数据库中记录发生变化 了 Web应用程序则很可能显示过期的 不准确的数据 特别是对于实时性要求较高的数据 如股票价格等是不可接受的 从存储布上来看 我们可以概括为客户端缓存和服务器端缓存 我们着重学习 页面输出缓存 和 页面局部缓存 有两个概念需要了解1 缓存清除指从内存中移除缓存数据 可能有3个原因造成 1 缓存数据过期 每个过期的缓存项数据都必须删除 否则导致服务器内存不足 2 缓存依赖项发生变化 依赖项发生了变化 则数据缓存则很可能会被清除 3 服务器内存不足 2 缓存过期在ASP NET可设置两种过期类型 一是可调过期 则指定某项目上次被访问后多长时间过期 另一 种是绝对过期 即指定某项在设定的时间过期 而不考虑访问频率 页面输出缓存 将已经生成的动 静态页面全部内容保存在服务器内存或浏览器中 当有请求时 系统将缓存中的相关数据直接输出 直到缓存数据过期 这个过程 缓存不需要再次经过页面处理生命周期 这样可以缩短请求响应时间 提高应用程序性能有 很显然 页面输出缓存不适用于频繁更换数据 而占用大量时间和资源才能编译生成的页面 即 对于那些数据经常更新的页面 则不适用 使用 OutputCache指令进行缓存配置使用 OutPutCache指令能实现对页面输出缓存的一般性需要 OutPutCache指令在ASP NET页或页中包含的用户控件的头部声明 OutputCache指令共包含10个属性 1 CacheProfile用于定义该页关联的缓存设置名称 可选属性 默认值是空 在用户控件中不支持该属性 指定时 必须与web config中中一个可用项的名称匹配 2 NoStoretrue false 用户控件不支持 设为true 相当于Response Cache SetNoStore 3 Duration用于设置页面或用户控件缓存的时间 秒 这 项属性是必需的 4 Sharedtrue false 用于确定用户控件是否可由多个页面共享 默认为false 注意在页面中的 OutputCache指令不支持该属性 5 Loaction用于指定输出缓存项的位置 是OutputCacheLocation枚举 Any Client DownStream None Server和ServerAndClient 默认为Any 表示输出缓存可用于所有请求 用户控件不支持 6 SqlDependency标识一组数据库 表名 页或控件的输出缓存依赖于这组名称时 SqlCacheDependcy会监视输出缓存所依赖的数据库中的表 7 VaryByControl用 分隔的字符串列表来更改用户控件的输出缓存 这些字符串代表在用户控件中声明的控件ID属性 除了包括VaryByParam属性 否则在 OutputCache指令中 该属性是必须的 8 VaryByHeader包括由 分隔的HTTP标头列表 用于使用输出缓 存发生变化 当该属性设为多标头时 对于每个指定的标头 输出缓存都包含一个请求文档的不同版本 VaryByHeader属性在所有HTTP1 1缓存中启用缓存项 而不局限于ASP NET缓存 用户控件不支持 10 VaryByParam用 分隔 默认情况下 这些字符串与用GET方法属性发送的查询字符值相对应 或与用POST方法发送的参数对应 当将该属性设置为多参数时 对于每个指定的参数 输出缓存都包含一个请求文档的不同版本 可能的值包括 none 和任何有效的查询字符串或POST参数名称 注 1 在输出缓存ASP NET页时 该项必须 2 对于用户控件 如果没有VaryByControl属性 也是必须的 若不需要缓存内容随任何指定参数发生变化 则可设为 none 若根据所有参数值发生变化 则设置为 使用示例 1 指示页面的输出的有效期是100秒 并且页面不随着任何GET或POST参数改变以 在该页被缓存时接收到的请求由缓存数据提供服务 100秒后 将从缓存中移除该页数据 并随后显示处理下一个请求并再次缓存 2 以上 OutputCache指令设置页面输出缓存的有效期是100秒 并根据查询字符串参数location或firstname来设置输出缓存 根据参数组合的不同 会缓存不同的N个版本 页面部分缓存 页面部分缓存是指输出缓存页面的某些部分 而不是缓存整个页面的内容 它有两种机制 1 将页面中需要缓存的部分置于用户控件 ascx 中 即 控件缓存 2 缓存后替换 将页面中的某一部分设置为不缓存 即使缓存整个页面 当请求时 将重新处理那些没被设置为缓存的内容 使用 OutputCache指令与页面输出缓存有相同之处 都是文件顶部设置包含属性的 OutputCache指令 但也有不同点 1 控件缓存的 OutputCache设置在用户控件中 2 它只能设置6个属性 Duration Shared SqlDependency VaryByControl VaryByCustom VaryByParam 示例1 以上代码设置用户控件缓存有效期时间是120秒 并允许使用CategoryID和SelectedID参数来改变缓存 当请求包含该用户控件的如下URL时http localhost 1 aspx CategoryId foo SelectedID 0http localhost 1 aspx CategoryId foo SelectedID 1服务器将缓存两个版本的用户控件缓存实例 示例2 缓存依赖 缓存依赖是实现缓存功能中非常重要的部分 通过缓存依赖 可以在被依赖对象 例如文件 目录 数据库表等 与缓存对象之间建立一个有效关联 当依赖对象发生变化时 缓存对象将变得不可用 并被自动从缓存中清除 重点是实现SQL数据缓存依赖 解决将数据从数据库获取后 将这些需要耗费大量服务器资源才能得到的数据存储在内存中 但存在数据缓存过期的问题 SQL数据缓存依赖核心是利用SqlCacheDependency类 在应用数据缓存对象与SQLServer数据表之间 建立一种缓存依赖关系 它还可用于页面输出缓存 注 SQL数据缓存依赖对于SQLServer2000和2005不同 对于2000 仅能跟踪到数据表的数据记录更改 因而只能采用添加特定数据表 触发器等方式 通过在后台中不断轮询数据库来检查数据更改 而SQLServer2005则可以实现数据库级 数据表级 甚至数据行的监测 一 使用基于轮询的SQL数据缓存依赖数据库配置 1 启用数据库的SQL数据缓存依赖功能aspnet regsql Slocalhost Usa dNorthwind ed S指定服务器名称是localhost U设置用户名为sa d指定数据库名 ed启用SQL数据缓存依赖 2 启用数据表的SQL数据缓存依赖功能aspnet regsql Slocalhost Usa dNorthwind tRegion et这两步完成后 会在数据库Northwind中自动生成一个表 AspNet SqlCacheTablesForChangeNotification 2 Web config配置 在system web配置节中增加如下 在以上配置节中 使用enabled启用了缓存依赖功能 轮询时间 600毫秒 数据库等 注 轮询时间必须大于500 3 使用基于轮询的SQL数据缓存依赖 1 在页面输出缓存中使用若有多个数据库或表 用 间隔NorthwindDB Web config中自行设定的名字 2 在数据源控件中使用 runat server 二 使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论