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 标头值的请求,将某页的多个版本缓存一分钟之久。

  protected void Page_Load(object sender, EventArgs e)
  {
  Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d));
  Response.Cache.SetCacheability(HttpCacheability.Public);
  Response.Cache.SetValidUntilExpires(true);
  Response.Cache.VaryByHeaders["Accept-Language"] = true;
  }

注意:如果要根据多个标头改变缓存的内容,需要在 VaryByHeaders 属性中设置多个值。如果要根据所有标头改变缓存的内容,请将 VaryByHeaders["VaryByUnspecifiedParameters"] 设置为 true。

时间: 2024-10-31 10:41:31

ASP.NET:页面缓存的相关文章

ASP.NET页面缓存常见的4种方式_实用技巧

本文为大家分享了4种常见的ASP.NET页面缓存方式,供大家参考,具体内容如下 1.分布式缓存Memcached,教程下载 2.内存缓存,此占用服务器资源 #region 内存缓存 public class MemoryCache { #region 写 /// <summary> /// 向内存写入数据缓存 /// </summary> /// <remarks>TOMMYHU2011-7-28 10:25创建</remarks> /// <para

艾伟_转载:浅析ASP.NET页面缓存的几点体会

前几天遇到个问题,百思不得其解.后来查阅了一些资料心里才有了点思路.把自己遇到的问题记录下来希望能给其他的园友一些帮助吧. 事情是这样的.我的一个ASP.NET页面用window.open导航后再次访问时没有得到更新,确切的说是再次访问时根本就没有访问服务器.可是这个现象在我的机器上并没有出现,而项目组中其他的机器都有此问题.当时我这个郁闷呐,因为不方便调试,最后就在页面上输出好多alert.终于在几次试验之后发现了问题的所在. 其主要问题就是IE缓存了页面,当服务器端出现更新时IE并没有检查到

浅析ASP.NET页面缓存的几点体会

前几天遇到个问题,百思不得其解.后来查阅了一些资料心里才有了点思路.把自己遇到的问题记录下来希望能给其他的园友一些帮助吧. 事情是这样的.我的一个ASP.NET页面用window.open导航后再次访问时没有得到更新,确切的说是再次访问时根本就没有访问服务器.可是这个现象在我的机器上并没有出现,而项目组中其他的机器都有此问题.当时我这个郁闷呐,因为不方便调试,最后就在页面上输出好多alert.终于在几次试验之后发现了问题的所在. 其主要问题就是IE缓存了页面,当服务器端出现更新时IE并没有检查到

ASP关于页面缓存清除的方法小结

 每次上Chinaasp总有不少的网友问及如何使Asp页面刷新,在IIS4的管理下页面的不刷新问题较IIS5严重得多,而且有时确实加入一些控制页面缓存的语句还是不起什么作用.原因我也不是很清楚,去问问微软吧:-) 现在我将清除页面缓存的一些方法总结如下: 1.在Asp页面首部加入 Response.Buffer = True Response.ExpiresAbsolute = Now() - 1 Response.Expires = 0 Response.CacheControl = "no-

asp.net页面缓存cache分析

缓存方式 ASP.NET中的缓存大体上分为两种方式:应用程序缓存和页面输出缓存.前者用编程的方式来缓存数据,这是本文主要说明的东西:后者是通过配置每个页面或是Web.config文件来实现的.而页面输出缓存有两种方式,一是缓存整个页面,一是缓存部分页面--这部分的内容以后再说.   自动移除 ASP.NET从缓存中自动移除数据的原因是以下之一: 服务器内存过低: 缓存项过期: 缓存项依赖改变.   应用程序缓存依赖 缓存依赖可以有以下几种方式:键和值依赖:文件依赖,缓存项依赖于一个外部文件,比如

asp.net页面缓存 几种做法详情

asp教程.net页面缓存 几种做法详情 1,aspx页面缓存 页面缓存的使用方法非常的简单,只需要在aspx页的顶部加一句声明<%@ outputcache duration="60" varybyparam="none" %>  这样整个页面的内容都会被缓存,页面中的asp.net教程代码.数据源在缓存期间都不会被运行,而是直接输出缓存的页面内容.  页面缓存是针对所有这个页面的访问者.这样1个访问者和1万个访问者.一次访问和100万次访问对数据库教

在web.config设置asp.net 页面缓存

<system.web>    <caching>      <outputCacheSettings>        <outputCacheProfiles>          <add name="pageCache" duration="60" varyByParam="none" enabled ="true"/>        </outputCac

asp.net中禁止页面缓存程序代码

方法一:导航时用服务器端的Response.Redirect方法,或者用前端得window.location.replace方法. 方法二:禁用ASP.NET页面缓存. 在必要的时候我还是推荐方法二的.因为我们做开发的不能控制浏览器的设置.用户如果把IE设置为从不检查更新缓存的问题则不好避免,所以还是用方法二,让IE的临时文件夹不存在页面文件. 另外,是否禁用页面缓存要根据实际情况来说,起初我认为页面缓存只是缓存在服务器,后来看了一篇blog 发现缓存的意义还是很大的.在很多情况下可以大大减小服

ASP.NET 2.0的页面缓存功能介绍

asp.net|缓存|页面 页面部分缓存是指输出缓存页面的某些部分,而不是缓存整个页面内容.实现页面部分缓存有两种机制:一种是将页面中需要缓存的部分置于用户控件(.ascx文件)中,并且为用户控件设置缓存功能(包含用户控件的ASP.NET页面可设置也可不设置缓存).这就是通常所说的"控件缓存".设置控件缓存的实质是对用户控件进行缓存配置.主要包括以下3种方法:一是使用@ OutputCache指令以声明方式为用户控件设置缓存功能,二是在代码隐藏文件中使用PartialCachingAt

ASP.NET页面在IE缓存问题的解决

asp.net|ie缓存|解决|问题|页面 以前没有注意到这个问题,今天在看Blog的时候发现有篇文章不错,或许以后值得借鉴: 一般情况下,WEB页面都会在Internet临时文件夹中有一个临时文件.我在操作IE时会出现这种情况:假如说有一个页面Page1.aspx,在我第一次访问后,它会在我的Internet临时文件夹里有一个Page1.aspx文件生成.之后,如果我改了Page1.aspx的数据后再次访问该页面,发现IE并没有对这个Page1.aspx的数据进行更新,反而打开的是我第一次访问