zoukankan      html  css  js  c++  java
  • asp.net页面缓存

    页面输出缓存作为最简单的缓存形式,将已经生成的动/静太页面全部内容保存在服务器内容中。当再有请求时,系统将缓存中的相关数据直接输出,直到缓存数据过期。在这个过程中,缓存不再要再次经过页面处理生命周期。这样可以缩短请求响应时间,提高应用程序性能。显然,页面输出缓存适用于不需要频繁更新数据,而占用大量时间和资源才能编译生成的页面。

    实现页面输出缓存,通常可以用以下两种方法:

    一、使用@ 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

    2使用请求浏览器缓存页的各个版本

    基于浏览器类型以声明方式缓存页的多个版本

    A、 在 ASP.NET 页中,包括一个具有必需的 Duration 以及 VaryByParam 或 VaryByControl 属性的 @ OutputCache 指令。必须将 Duration 属性设置为大于零的整数。如果希望仅按浏览器类型进行缓存,请将 VaryByParam 属性设置为“None”。

    B、 在 @ OutputCache 指令中,包括 VaryByCustom 属性并将其设置为“browser”。下面的示例将导致持续缓存该页达 10 秒。输出将因浏览器类型而异。

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>

    基于浏览器类型以编程方式缓存页的多个版本

    A、 在页代码中,对页的 Response 属性的 Cache 属性调用 SetExpires 和 SetCacheability 方法。

    B、 调用 SetVaryByCustom 方法,在 custom 参数中传递值“browser”。

    下面的代码示例演示如何持续缓存页的多个版本达 1 分钟。输出将因发出请求的浏览器的类型而异。

    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.SetVaryByCustom("browser");

    }

    3、 使用自定义字符串对页的各个版本进行缓存

    根据自定义字符串对页输出的多个版本进行缓存

    A、 在 ASP.NET 页中包括 @ OutputCache 指令,该指令带有必需的 Duration 和 VaryByParam 属性。必须将 Duration 属性设置为大于零的整数。如果不想使用 VaryByParam 属性提供的功能,则必须将其值设置为“无”。

    B、 若要以声明方式设置自定义字符串,请在 @ OutputCache 指令中包括 VaryByCustom 属性,并将该属性设置为您要作为进行不同输出缓存行为的依据的字符串。

    下面的指令根据自定义字符串“minorversion”改变页输出。

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>

    1. 若要以编程方式设置自定义字符串,请调用 SetVaryByCustom 方法,并将要使用的自定义字符串传递给它。

    下面的代码示例演示如何将自定义字符串设置为“minorversion”。

    Response.Cache.SetVaryByCustom("minorversion");

    在应用程序的 Global.asax 文件中,重写 GetVaryByCustomString 方法以指定自定义字符串的输出缓存行为。

    被重写的方法接受您在 VaryByCustom 属性或 SetVaryByCustom 方法中设置的字符串,作为它的 arg 参数。例如,有些页可能根据请求浏览器的次版本进行缓存。对于这些页,可以将 VaryByCustom 属性设置为“minorversion”。然后,在被重写的 GetVaryByCustomString 方法中,可以检查 arg 参数,并根据 arg 参数的值是否为“minorversion”返回不同的字符串。

    下面的代码示例演示一个 Global.asax 文件,其中的 GetVaryByCustomString 方法被重写。

    <%@ Application language="C#" %>

    <script runat="server">

    public override string GetVaryByCustomString(HttpContext context,

    string arg)

    {

    if(arg == "minorversion")

    {

    return "Version=" +

    context.Request.Browser.MinorVersion.ToString();

    }

    else

    {

    return "";

    }

    }

    </script>

  • 相关阅读:
    mac 10.15.7 修改PATH
    oc 属性类型一般用法
    ubuntu解压zip文件名乱码
    telnet 退出
    docker 根据容器创建镜像
    mac android adb device 没有显示设备
    Yii2 查看所有的别名 alias
    Yii2 App Advanced 添加 .gitignore
    ubuntu 18.04 搜狗突然就提示乱码
    An error occured while deploying the file. This probably means that the app contains ARM native code and your Genymotion device cannot run ARM instructions. You should either build your native code to
  • 原文地址:https://www.cnblogs.com/chorrysky/p/1090308.html
Copyright © 2011-2022 走看看