缓冲(caching)技术在网络应用程序中的作用

本文详细介绍了缓冲(caching)技术在网络应用程序中的重要作用,特别是在ASP.NET中,通过页面输出、页面部分和数据缓冲三种方式显著提升了响应速度。页面输出缓冲通过保存动态网页提高效率;页面部分缓冲针对复杂部分进行缓存;数据缓冲利用Cache类保存对象,提高数据访问速度。通过设置有效期、关键字匹配和垃圾清理等方式,有效管理和利用缓冲区,优化资源使用。
摘要由CSDN通过智能技术生成
 缓冲(caching)技术在网络应用程序中的作用非常重要,因为目前的技术大多在客户端浏览器发出请求后,动态的生成一些静态的网页然后传回客户浏览器,这种动态生成技术使得程序对网站服务器的性能要求较高,尤其是要生成一些复杂的网页或频繁生成的相同网页时,问题显得更加严重,于是就有了缓冲技术的出现,它将动态生成的静态网页保存起来,当客户端有相同的请求时就直接将已保存的网页发送过去,大大的提高了浏览速度和工作效率,而ASP.NET就是通过将这些缓冲的内容存储在内存中以获得更快的读取速度,即在内存汇总开辟了程序缓冲区。
8.5.1    ASP.NET缓冲方式(三种:页面输出、页面部分、数据缓冲)
ASP.NET技术中,有三个缓冲的方法:页面输出、页面部分、页面数据。这三种方法各有特点,页面输出提供了对于请求的动态反映,一般存放完整的浏览页。当有客户端请求时,它直接将缓冲区中的页面传给浏览器,这样省掉了大量的代码执行时间,提高了运行效率。
如果将整个网页放入缓冲区不太现实,我们也可以采用页面部分缓冲的办法,它是将网页中复杂的、难以生成的放入缓冲区,提供给不同的请求使用,对于那些必须动态生成的部分单独处理,从而减少了要执行的代码的数量。
数据缓冲是将对象放入内存缓冲区中,由ASP.NET提供的一系列的类、属性和方法来控制这些缓冲区内的对象。
下面就让我们来详细认识这几种缓冲技术:
(1)页面输出
页面输出缓冲是通过保存已生成的动态网页来提高请求和反应能力,它是默认允许的,但对于已经指定的响应,输出是不进行缓冲的,除非是有直接的代码说明为响应提供输入缓冲。
若要提供输出缓冲,则需指定缓冲区中内容的有效期和建立有访问权限的公有缓冲,这个可以通过OutputCache API实现或使用@OutputCache指令来完成,当缓冲区建立后,第一次的GET请求会为缓冲区开辟一个入口,后面的GET或HEAD请求都会利用这个入口并行地利用页面输入缓冲数据。
页面输入是通过有效期来管理缓冲区内中的页面的。如果有一个页面在缓冲区内被标记了有效期,有效期是30分钟,那么当这个页面的停留时间超过30分钟时,就会被自动清理出缓冲区,若再有对于这个页面的请求,那么这个页面的缓冲页面会被重新创建,标记上新的有效期,记住:这个有效期是绝对的有效期,也就是页面的实际保留时间。
有效期的声明方法一如下:
<%@ OutputCache Duration=”60” VaryByParam=”none” %>
其中“Duration”的计量单位是秒,“VaryByParam”表示页面是否会因为指令而改变。
有效期的声明方法二如下:
Response.Cache.SetExpires (DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability (HttpCacheability.Public);
这是通过类HttpCachePolicy的方法来设定有效期的,其中SetExpires方法是用来确定有效期的时间,而SetCacheability方法表示文档在网络中的缓冲方式,其参数是枚举型的,取值有四种(Server、Public、Private、NoCache),Private是默认值,指明请求的响应在客户端,Public说明响应在客户端和代理服务器都是可以缓冲的,Serve表示只能在最初的服务器缓冲,而NoCache表示不缓冲。
(2)页面部分
当将这个页面放入缓冲区变得不太可能时,我们就可以使用ASP.NET的另一个缓冲的方法 —— 页面部分缓冲。其实,页面部分缓冲也能看作是页面输出缓冲的一种,如果要使用页面部分缓冲,则需要在页面中使用user control来说明需要缓冲的部分,即将缓冲部分和网页进行分离,然后使用@OutputCache指令进行标记,确定起有效期等属性。
@OutputCache有以下几个重要属性:
    a)    Duration:以秒为单位,用来指定有效期的时间。
    b)    Location:取值是枚举型的,有ANY、Client、Downstream、Server和None五种取值,“Server”表示输出缓冲定位于处理请求的服务器,“Client”表示定位于发送请求的客户端浏览器,“Downstream”表示输出缓冲定位于处理请求的服务器的下传流,“ANY”则表示这三种情况都是允许的,而“None”表示不使用输出缓冲。
    c)    VaryByHeader:根据http头信息来改变缓冲区内容。
    d)    VaryByCustom:有两种取值类型,一种是“browser”,表示根据浏览器的名字和版本信息改变缓冲区内容,另一种是自定义字符串,它必须要在Global.asax文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值