第16章 缓存和异步访问.ppt

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第16章 缓存与异步访问 缓存技术是指在内存中存储那些需要频繁操作和访问的数据,以提高应用的性能。在ASP.NET中可能最影响速度的操作就是访问数据库。首先需要与数据库连接、打开数据表关查询数据、向客户端返回数据,这些操作将会显著的影响服务器端的性能。对于一些更新不频繁或者是数据量很大的操作,频繁的操作会导致消耗大量服务器资源,最好的方法是使用缓存来提高应用程序的性能。 16.1 理解ASP.NET缓存技术 很多开发人员排斥或及少使用缓存,认为缓存只是一种装饰,这是一种错误的见解。灵活的使用缓存能有效的提高应用程序的性能,ASP.NET提供了大量的缓存API和多种缓存机制,级大的简化了创建灵活缓存的复杂性。 ASP.NET中具有两种类型的缓存机制,一种是输出缓存,一种是应用程序缓存。 输出缓存(Output caching):输出缓存是一种简单的缓存机制,它将输出到客户端的HTML页面进行缓存,当其他用户继续请求页面时,服务器端将直接从内存中取出缓存的页面,而不用历经一遍的ASP.NET的页面生存周期。页输出缓存对于那些不经常更改,但需要大量处理才能创建的页特别有用。例如,如果创建大通信量的网页来显示不需要频繁更新的数据,页输出缓存则可以极大地提高该页的性能。 数据缓存(Data caching):又称应用程序缓存,这种类型的缓存需要手工编写程序代码来实现,比如可以可以将动态生成的DataSet对象添加到一个缓存对象中,后继的用户使用该对象时,可以判断缓存中是否存在缓存的对象,如果存在则直接使用缓存对象否则创建一个全新的对象并进行缓存。 16.2 输出缓存 输出缓存将缓存最终输出的HTML内容,当用户再次请求相同的页面时,页面将不会重新经过页面生命周期重新创建一次。从理论上来说,输出缓存能够提供最大的性能增强。 16.2.1 定义输出缓存 输出缓存将缓存最终输出的HTML内容,当用户再次请求相同的页面时,页面将不会重新经过页面生命周期重新创建一次。从理论上来说,输出缓存能够提供最大的性能增强。 新建一个名为CachingDemo的网站,然后创建一个PageCaching.aspx的网页,在PageCaching页面上放置一个Label控件和一个Button控件,在Page_Load事件中添加如下的程序代码。 protected void Page_Load(object sender, EventArgs e) { lblDate.Text = 现在的时间是br/ + DateTime.Now.ToString(); } 16.2.2 查询字符串缓存 使用VaryByParam属性可以缓存指定查询字段串的页面,可能的值包括“none”、“*”以及任何有效的查询字符串或POST参数名。 在一些场合下,使用VaryByParam非常有必要。比如一般企业应用系统的产品信息表,这个表只在特定情况下才发生变化,但是在很多场合都需要查看该表,比如销售、财务、生产模块等模块都要有能够查看产品细节的功能。通常创建一个主从式页面,在主页面中显示产品编码,而从页面显示产品信息。借助于VaryByParam属性,可以对指定查询字符串变量的不同页面进行缓存。 VaryByParam属性设置为none时,表示不根据查询字符串缓存,通常用于静态页面中。 *则表示可根据任何查询字符串缓存。通常为VaryByParam指定一个特定的查询字符串,如果要指定多个查询字符串则使用分号分隔的字符串,比如“ProductID;CategoryID”。 16.2.3 自定义缓存 当保存一个页面的多个版本时,除了使用查询字符串之外,也可以使用VaryByCustom来创建自定义的缓存,开发人员可以在VaryByCustom指定自定义的字符串,然后编写代码检查VaryByCustomer的值,根据指定的值来决定是否要缓存一个新版本。 比如要跟据浏览器的不同版本来缓存页面,这样让IE可以接收特定于IE的缓存页面,而Firefox则可以使用Firefox优化过的页面。下面的代码在MasterProducts.aspx页面上添加一个自定义缓存设置,代码如下所示: %@ Page Language=C# AutoEventWireup=true CodeFile=MasterProducts.aspx.cs Inherits=MasterProducts % 16.2.4 用户控件缓存 一些网页通常不需要缓存整页,此时可以考虑将需要缓存的部分创建为用户控件,在用户控件中设置缓存。下面创建一个ProductsList的用户控件,在该用户控件中放置一个DropDownList控件绑定到Products数据表的ProductName属性

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档