• ACS.NET缓存技术


    页面和控件缓存

    还是先来过一遍@OutpuCache所有的属性,共用11个属性,这个指令可以用于页面(.aspx)和用户控件(.ascx)
    属性
    Duration
    页或用户控件进行缓存的时间,单位秒,可以在页面或控件上设置该属性来建立一个缓存的过期策略,该属性是必须的。
    VaryByParam
    分号分割的字符串列表,是否根据某个参数变化,和VaryByControl二者必须有一。如果不变化,可将值设置为none,否则设置为*,或者变化的参数名称(Get或Post的参数)。
    VaryByControl
    分号分割的字符串列表,只限于用户控件,串列表的值是服务器控件标识。

    Location 缓存的位置,默认是Any,该属性仅限于.aspx文件,可选项是Any,Client,Downstream,Server,None,ServerAndClient
    Shared 该属性仅限于.ascx文件,默认为false,用户控件是否可以由多个页面共享。
    CacheProfile 你可以在web.config中配置一个缓存设置,这样以后就可以共用这个缓存设置,方便统一修改,不支持用户控件
    NoStore 这个不是太清楚什么用,MSDN上说是决定是否对敏感信息辅助存储.
    VaryByContentEncodings 同样也是逗号分隔的字符串列表,根据Accept-Encodeing Http头来决定是否缓存不同的版本。
    VaryByHeader 根据Http headers来决定是否进行分版本存储,同样也是分号分隔的字符串列表
    VaryByCustom 通过这个属性,你可以自定义怎么来缓存页面
    SqlDependency 为当前缓存指定一个依赖项,当发生变动时从缓存区中删除掉当前页面或控件的缓存。
    就是上面列的着11个属性,大多数时候,只需要DurationVaryByParam这两个属性就搞定了,比如:

    <%@ OutputCache Duration="100" VaryByParam="none" %>


    上面指令没有指定Location默认是客户端和服务器端都缓存,这个时候如果改变页面的QueryString会被忽略,直接从缓存中返回结果,所以在需要根据参数返回不同内容的页面千万不要这么设置,可以采用以下方式:

    <%@ OutputCache Duration="100" VaryByParam="*"%>

    <%@ OutputCache Duration=60” VaryByParam=”None”  %>

         Duration 属性设置页面将被缓存60妙。任何的用户请求都会被缓存,在缓冲的60秒内相同的请求都会直接使用缓存的页面。当缓存过期后ASP.NET会再次执行页面代码并且为下一个60秒创建一个新的HTML缓存。


    上面关于Duration属性,说是必须的,其实也不然,当你不想用缓存是就不必写^_^,如下,禁用当前页面缓存:
    <%@ OutputCache Location="None" %>

    片段缓存

    <%@ OutputCache Duration="60" VaryByParam="*" %>

    将60 秒,并且将针对查询字符串的每个变动、针对此控件所在的每个页面创建单独的缓存条目。

    <%@ OutputCache Duration="60" VaryByParam="state;city" %>

    将缓存用户控件60秒,并使用"state"和"city"查询字符串或窗体发布参数改变缓存。
    VaryByParam在ASP.NET的服务器上缓存控件的多个实例。
    eg:一个用户控件的宿主页的下列URL缓存用户控件内容的单独实例:

    http://localhost/webfrom.aspx?state=shangxi&city=xian
    http://localhost/webfrom.aspx?state=shangxi&city=xianyang

    用户控件能根据提供的参数动态生成不同的内容,除了支持VaryByParam属性外,片段缓存,用户控件输出缓存还支持VaryByControl 的属性。
    VaryByParam属性基于使用POST或GET发送的名称/值对改变缓存结果,而VaryByControl 的属性将根据用户控件(通常是页面上的控件,例如,DropDownList)的成员的值改变该控件的缓存。如果指定了 VaryByControl,不使用VaryByParam属性,也要将设置VaryByParam="none"。
    eg:

    <%@ OutputCache Duration="60" VaryByParam="none" VaryByControl="CategoryDropDownList" %>

    将缓存用户控件60 秒,并且将针对 CategoryDropDownList 控件的每个不同的值、针对此控件所在的每个页面创建单独的缓存条目。

    <%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser" Shared="true %>

    将缓存用户控件 60 秒,并且将针对每个浏览器名称和主要版本创建一个缓存条目。然后,每个浏览器的缓存条目将由引用此用户控件的所有页面共享(只要所有页面都用相同的 ID 引用该控件即可)。

    缓存API

  • 相关阅读:
    Android OpenGL(2)
    Bootloader:BareBox
    Android OpenGL(1)
    Android脚本环境
    Android用户界面开发:事件处理
    S5PV210按键控制LED
    S5PV210控制蜂鸣器
    Windows Vista/Windows 7上安装wince5.0/6.0及SDK模拟器
    Makefile
    每日英语:Apps Reorder the Job Landscape
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1849949.html
Copyright © 2020-2023  润新知