ASP.NET:页面缓存
ASP.NET 提供三种主要形式的缓存:页面缓存、用户控件输出缓存和缓存 API。 页面输出缓存作为最简单的缓存形式,将已经生成的动/静太页面全部内容保存在服务器内容中。当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期。在这个过程中,缓存不再要再次经过页面处理生命周期。这样可以缩短请求响应时间,提高应用程序性能。显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面。 实现页面输出缓存,通常可以用以下两种方法: 一、使用@ OutputCache指令 使用@ OutputCache指令,能够实现对页面输出缓存的一般性需要。@ OutputCache指令在ASP.NET页或者页中包含的用户控件的头部声明。这种方式非常方便,只需几个简单的属性设置,就能够实现页面的输出缓存策略。 二、使用HttpCacheability类 该类主要包含用于设置缓存特定的HTTP标头的方法和用于控制ASP.NET页面输出缓存的方法。与.NET Framework 1.x中的HttpCachePolicy类相比,.NET Framework 2.0中的HttpCachePolicy类得到了扩充和发展。 使用这两种方法,我们可以实现下列功能: 1、使用参数对页的各个版本进行缓存 使用 ASP.NET,您可以根据指定的 HTTP 标头的值对某页的多个版本进行缓存。当请求页时,您可以指定按传递到应用程序的单个标头、多个标头或所有标头进行缓存。 根据 HTTP 标头值以声明方式对某页的各个版本进行缓存 A、 在 ASP.NET 页中,在 @ OutputCache 指令中包括必需的 Duration 和 VaryByParam 或 VaryByControl 属性。必须将 Duration 属性设置为大于零的整数。如果希望只按 HTTP 标头值进行缓存,则必须将 VaryByParam 属性设置为“None”。 B、 在 @ OutputCache 指令中,包含 VaryByHeader 属性,将其值设置为要作为改变缓存内容的依据的 HTTP 标头的名称。 下面的示例将页缓存 60 秒,并根据随 Accept-Language HTTP 标头传递的值设置要缓存的页的版本: <%@ OutputCache Duration="60" VaryByParam="None" VaryByHeader="Accept-Language" %> 注意:如果要根据多个标头改变缓存的内容,请以分号 (;) 作为分隔符包括标头名称的列表。如果要根据所有标头值改变缓存的内容,请将 VaryByHeader 属性设置为星号 (*)。 根据 HTTP 标头值以编程方式对某页的各个版本进行缓存 A、 在页的 Page_Load 方法中,对页的 Response 对象的 Cache 属性调用 SetCacheability 和 SetExpires 方法。 B、 将 VaryByHeaders 属性中的 HTTP 标头值设置为 true。 下面的代码示例演示如何为有不同的 Accept-Language HTTP 标头值的请求,将某页的多个版本缓存一分钟之久。
注意:如果要根据多个标头改变缓存的内容,需要在 VaryByHeaders 属性中设置多个值。如果要根据所有标头改变缓存的内容,请将 VaryByHeaders["VaryByUnspecifiedParameters"] 设置为 true。 2、使用请求浏览器缓存页的各个版本 基于浏览器类型以声明方式缓存页的多个版本 A、 在 ASP.NET 页中,包括一个具有必需的 Duration 以及 VaryByParam 或 VaryByControl 属性的 @ OutputCache 指令。必须将 Duration 属性设置为大于零的整数。如果希望仅按浏览器类型进行缓存,请将 VaryByParam 属性设置为“None”。 B、 在 @ OutputCache 指令中,包括 VaryByC |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |