zoukankan      html  css  js  c++  java
  • 用户控件的缓存技术之一【共三篇】

    原文发布时间为:2009-10-29 —— 来源于本人的百度文章 [由搬家工具导入]

    因为开发的网站数据量很大,对一些动态数据,但又长时间不变的数据,考虑了好久,最终采用ascx缓存技术。

    还好,现在网上的资料很全,在此对提供帮助的网友表示万分的感谢,现在把搜索的资料进行整合,以便自己查找学习,也希望能帮助其他人。

    用户控件的缓存,也叫片断缓存。

    在ascx文件中写入缓存的语句,而不在aspx文件中写缓存语句,这样ASP.NET就可以只缓存ascx片断的输出了。一 般像页眉或页脚基本上都是一样的,就不需要重新加载。但是如果其中有动态变化的数据就不能对其进行缓存,因为一旦被缓存后程序就不会再创建它的实例来更新 数据显示,只有等到生存期过期才行,所以对于这种情况就不适于用页面片断缓存。

    注意:

    一、注意片段缓存不支持Location特性;缓存页面片段惟一合法的地方是web服务器。这是因为片段缓存在ASP.NET中是新的功能,所以浏览器和代理服务器不支持。

    二、片段缓存有另外一个在页面缓存中没有的特性——VaryByControl。VaryByControl特性允许指定一个由分号分隔的字符串列表,代表用户控件内使用的控件的名称;ASP.NET将针对值的每个不同的组合生成用户构件的一个缓存版本。以下是缓存属性说明

    Duration允许我们控制页面在缓存中生存的时间(单位是秒)

    VaryByParam允许我们缓存页面的不同版本。在上面的例子中,VaryByParam设为了RequestID,所以ASP.NET使用RequestID参数的不同值, 这些值或者是在HTTP GET的查询字符串中传入,或者是在HTTP POST的参数中传入。可以通过检查RequestID参数的值让应用程序区分不 同的用户;通过在页面的OutputCache指令中放置VaryByParam="RequestID",可以让ASP.NET为每个用户缓存页面的不 同版本。

    如果不想根据参数的值缓存页面的不问版本,那么只要把VaryByParam设为none。

    也可以要求ASP.NET为每个可能的参数组合缓存页面的一个版本。为此,可把VaryByParam设为*。

    VaryByCustom特性与VaryByParam的相似之处在于,它们允许指定何时应创建页面新的缓存版本。

    VaryByCustom当设为browser时,允许我们根据浏览器的名称和主版本信息缓存不同版本。也可以把它设为一个自定义方法的名称,从而实现我们自己的逻辑,控制缓存的版本。

    示例说明:

    在ascx 文件头部加 <%@ OutputCache Duration="30" VaryByParam="None"%>
    上面是说缓存这个控件30秒,并且缓存内容不随任何指定参数发生变化

    在aspx页面像正常调用ascx文件一样,注册引用。

    <%@ Register TagName="Prov" TagPrefix="uc" Src="~/common/AreaYP.ascx" %>
           <uc:Prov ID="areaprov" runat="server" />

    如果要对该用户控件自定义的属性赋值,需要考虑到缓存控件,在引用时涉及到两个状态对象。初次调用时,使用的是控件本身,缓存期中,使用的是系统根据控件的创建形式相应的建立新的缓存对象。

    属性赋值将在下篇给出。

  • 相关阅读:
    mysql book网盘
    mysql数据库测试库下载
    TEMP
    测试
    吴炳锡
    ACMUG
    mysql select语句执行顺序
    mysql mha高可用架构的安装
    执行计划解读 简朝阳 (Sky Jian) and 那蓝蓝海
    mysql字符串比较
  • 原文地址:https://www.cnblogs.com/handboy/p/7158324.html
Copyright © 2011-2022 走看看