ASP.NET - Substitution Web 服务器控件概述

ASP.NET Substitution 控件的使用方法 Substitution 控件可用于采用缓存配置的 ASP.NET 网页上。使用 Substitution 控件,可以在网页上创建一些区域,这些区域可以动态更新,然后集成到缓存的网页中。 立即下载

 

您可以使用 Substitution 控件,在网页上创建可动态更新并可随后集成到缓存页中的区域。

 

一、方案

使用 Substitution 控件可以在要缓存输出的网页上指定要显示动态内容的部分。对于多数内容都要进行缓存的页,Substitution 控件提供了进行部分页缓存的简化的解决方案。您可以缓存整个页的输出,然后使用 Substitution 控件来指定页中不进行缓存的部分。缓存区域仅执行一次,且将一直从缓存读取,直至该缓存条目到期或被清除。动态区域则在每次请求页时都会执行。此缓存模型简化了其内容主要是静态内容的网页的代码,因为您不必在 Web 用户控件中对这些静态内容进行封装,以将它们放入缓存。例如,对于包含静态内容(如新闻故事)和显示广告的 AdRotator 控件的网页,此缓存模型就非常有用。新闻故事不会经常更改,这意味着可以将它们放入缓存。您可能会希望在用户每次请求该网页时显示一条新广告。AdRotator 控件直接支持缓存后替换,无论是否缓存了网页,它都会在网页每次回发时呈现一个新广告。

 

二、背景

缓存 ASP.NET 网页时,默认情况下,会缓存该网页的全部输出。在第一次请求时,该页将运行并缓存其输出。对于后续的请求,将通过缓存来完成,该页上的代码不会运行。

在某些情况下,您可能不但希望缓存 ASP.NET 网页,还希望在每次请求该网页时更新该网页上的选定部分。例如,您可能要缓存某页的很大一部分,但需要动态更新该页上的与时间高度相关的信息。

可以使用 Substitution 控件将动态内容插入到缓存页中。Substitution 控件不会呈现任何标记。因此,您需要将该控件绑定到网页或父级用户控件中的方法。您需要创建可返回要插入到网页中的信息的静态方法。由 Substitution 控件调用的方法必须符合下面的标准:

      ·必须为静态方法(在 Visual Basic 共享)。

·必须接受类型为 HttpContext 的参数。

·必须返回类型为 String 的值。

Substitution 控件无法访问网页上的其他控件,也就是说,您无法检查或更改其他控件的值。但代码却可使用传递给它的参数来访问当前网页的上下文。

在页运行时,Substitution 控件会调用该方法,然后用从该方法的返回值替换页上的 Substitution 控件。

 

代码示例

下面的示例演示如何使用 Substitution 控件在缓存页上创建可动态更新的内容。页的 Load 事件中的代码用当前时间来更新 Label 控件。因为页的缓存持续时间已设置为 60 秒,所以 Label 控件的文本不会更改,即使在 60 秒的时间内多次请求了该页。页上的 Substitution 控件调用静态方法 GetTime,该方法将以字符串的形式返回当前时间。每次刷新网页时,都会更新 Substitution 控件表示的值。

<%@ Page Language="C#" %>

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

 

<script runat="server">

    void Page_Load()

    {

        Label1.Text = DateTime.Now.ToString();

    }

   

    public static String GetTime(HttpContext context)

    {

      return DateTime.Now.ToString();

    }

</script>

<html>

<head runat="server"></head>

<body>

    <form id="form1" runat="server">

    <div>

    <p>

    <asp:Label runat="server" ID="Label1" />

    </p>

    <p>

    <asp:Substitution runat="server"

        ID="Substitution1"

        MethodName="GetTime" />

    </p>

    <p>

    <asp:Button runat="server" ID="Button1" Text="Submit"/>

    </p>

    </div>

    </form>

</body>

</html>

 

三、Substitution 类

      使用 Substitution 控件指定输出缓存网页上要以动态内容替换该控件的部分。Substitution 控件为要缓存大部分内容的页提供了一种缓存局部页的简化解决方案。可以对整页进行输出缓存,然后使用 Substitution 控件指定页中免于缓存的部分。需要缓存的区域只执行一次,然后从缓存读取,直至该缓存项到期或被清除。动态区域则在每次请求页时执行。由于不必对这些部分进行封装以缓存在 Web 用户控件中,因此,此缓存模型简化了主要是静态内容的页的代码。例如,如果页包含静态内容(如新闻报道)和显示广告的 AdRotator 控件,这种情况下,此缓存模型就很有用。新闻报道不会更改,这意味着它们可以缓存。但是,您希望在用户每次请求该页时都显示一条新广告。AdRotator 控件直接支持缓存后替换,无论页是否缓存,都在该页回发时呈现一个新广告。

      说明: 在缓存页包含的用户控件中可以放置 Substitution 控件。但是,在输出缓存用户控件中不能放置 Substitution 控件。

      Substitution 控件执行时,会调用一个返回字符串的方法。该方法返回的字符串即为要在页中的 Substitution 控件的位置上显示的内容。使用 MethodName 属性指定要在 Substitution 控件执行时调用的回调方法的名称。指定的回调方法必须是包含 Substitution 控件的页或用户控件的静态方法。回调方法的签名必须与接受 HttpContext 参数并返回字符串的 HttpResponseSubstitutionCallback 委托的签名匹配。

若要操作页的输出缓存,可使用 @ OutputCache 指令、HttpCachePolicy 类或 Cache 属性。

Substitution 控件的另一种使用方法是,使用 HttpResponseSubstitutionCallback 委托实现缓存替换行为。此外,还可以在直接支持缓存替换功能的控件(如 AdRotator 控件)上实现缓存替换行为。

 

示例

下面的代码示例演示如何以声明方式将 Substitution 控件添加到输出缓存网页。加载页面时,将在一个标签中向用户显示当前的日期和时间。页面中的此区域仅 60 秒便缓存和更新一次。当 Substitution 控件执行时,将调用 GetCurrentDateTime 方法。GetCurrentDateTime 返回的字符串将显示给用户。每次刷新页时,都不会缓存和更新页中的这一部分。

<%@ outputcache duration="60" varybyparam="none" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server" language="C#"> 

 

  void Page_Load(object sender, System.EventArgs e)

  {

    // Display the current date and time in the label.

    // Output caching applies to this section of the page.

    CachedDateLabel.Text = DateTime.Now.ToString();   

  }

 

  // The Substitution control calls this method to retrieve

  // the current date and time. This section of the page

  // is exempt from output caching.

  public static string GetCurrentDateTime (HttpContext context)

  {

    return DateTime.Now.ToString ();

  }

 

</script>

 

<html  >

<head runat="server">

  <title>Substitution Class Example</title>

</head>

<body>

  <form id="form1" runat="server">

 

    <h3>Substitution Class Example</h3> 

 

    <p>This section of the page is not cached:</p>

 

    <asp:substitution id="Substitution1"

      methodname="GetCurrentDateTime"

      runat="Server">

    </asp:substitution>

 

    <br />

 

    <p>This section of the page is cached:</p>

 

    <asp:label id="CachedDateLabel"

      runat="Server">

    </asp:label>

 

    <br /><br />

 

    <asp:button id="RefreshButton"

      text="Refresh Page"

      runat="Server">

    </asp:button>    

 

  </form>

</body>

</html>

ASP.net Substitution 页面缓存而部分不缓存的实现方法 在ASP.NET中要实现部分内容非缓存,而其它的都需要缓存输出,可以使用Substitution控件实现. 立即下载

相关推荐

HITS算法详解及代码实现

占坑

蓁蓁尔的博客 7461

Substitution 控件API应用

//这种方式是使用的substitution控件的基本方法 <asp:Substitution ID="Substitution1" runat="server" MethodName="GetCurrentDateTime" /> //下面这种方式是调用substitution的API的方式(substitution的API包括一个关键的WriteSubstitution方法,该...

weixin_34402408的博客 182

AD9361 RSSI配置实战:从寄存器到精准功率测量的避坑指南

本文详细解析了AD9361芯片的RSSI配置实战,从寄存器设置到精准功率测量的全流程避坑指南。通过优化模式选择、测量持续时间及高级参数配置,实现高精度信号强度测量,并分享实际项目中的校准流程与性能优化技巧,帮助工程师提升射频接收链路的测量精度。

weixin_38166557的博客 443

ASP.NET Substitution控件

Substitution 控件,简单通俗的说(我的理解): 按照自己的意愿指定网页中那些部分可以被缓存,那些不能! 下面是引用 慧都控件网上 downmoon  的文章 Substitution控件----动态更新缓存页的部分 缓存某个 ASP.NET 页时,默认情况下会缓存该页的全部输出。在第一次请求时,该页将运行并缓存其输出。对于后续的请求,将通过缓存来完成,该页上的代码不

hi_dzj的专栏 5822

Ollama教程——模型:如何将模型高效导入到ollama框架

本教程详细介绍了如何将GGUF、PyTorch和Safetensors格式的模型导入到ollama框架中。通过一系列步骤,从环境准备、模型转换和量化,到最终的模型创建和运行,我们为开发者提供了一个清晰的指南。此外,我们还探讨了如何发布模型到ollama平台,使得模型可以被更广泛地分享和应用。ollama框架提供了一个灵活、高效的解决方案,帮助开发者在各种环境中部署和运行机器学习模型。无论您是想将现有模型快速部署到生产环境,还是希望探索新的模型架构,ollama都能为您提供所需的工具和资源。

walkskyer的博客 1万+

基于BenchmarkSQL的达梦数据库TPCC性能测试

中的用户和密码在达梦数据库中创建测试用户,并保证其表空间足够容纳生成的测试数据。如果开启了归档,还要考虑归档日志占用的空间。BenchmarkSQL默认不支持达梦数据库。这里我们让BenchmarkSQL把达梦数据库当作Oracle即可。Oracle数据库对应的测试配置文件为。是使用BenchmarkSQL进行性能测试的主要配置文件。是生成的测试报告,png文件是报告中包含的图片。拷贝达梦数据库驱动到BenchmarkSQL的。测试结束后,会在当前路径下生成一个以。规则命名的结果目录。

Sebastien23的博客 2635

VS2005 Web服务器控件概述

ImageMap Web 服务器控件概述利用 ASP.NET ImageMap 控件可以创建一个图像,该图像包含许多用户可以单击的区域,这些区域称为作用点。每一个作用点都可以是一个单独的超链接或回发事件。ImageMap 元素ImageMap 控件主要由两个部分组成。第一个是图像,它可是任何标准 Web 图形格式的图形,如 .gif、.jpg 或 .png 文件。第二个元素是作用点控件的集合。每个

奥法鱼 4728

lammps蒙特卡洛MC模拟案例

在lammps中,和MC相关的模拟命令有三个:fix gcmc、fix atom/swap、fix sgcmc。在一个lammps模拟中,mc和md可同时存在,间隔运行,所以设置fix sgcmc命令的同时,可以同时设置系综(nve、nvt或者npt)。lammps官网自带案例中也有一个fix sgcmc的案例,主要模拟FeCu合金的MC建模。sgcmc命令可应用到合金的模拟中,如短程有序模拟。MC运行间隔为100步,最终的浓度比例为0.02,也就是2%的Fe原子交换为Cu原子。大家好,我是小马老师。

lammps_jiayou的博客 1825

Substitution Web 服务器控件概述

Substitution 控件用在配置为需要进行缓存的 ASP.NET 网页上。Substitution 控件允许您在页上创建一些区域,这些区域可以用动态方式进行更新,然后集成到缓存页。动态更新缓存页的部分缓存某个 ASP.NET 页时,默认情况下会缓存该页的全部输出。在第一次请求时,该页将运行并缓存其输出。对于后续的请求,将通过缓存来完成,该页上的代码不会运行。在某些情况下,可能

高山流水 857

减法平均优化器(SABO)算法详解:从数学原理到工程应用

减法平均优化器(SABO)是一种基于数学概念的新型元启发式优化算法,由Trojanovský和Dehghani于2023年提出。该算法通过v-减法运算和平均值计算实现搜索优化,核心创新是采用目标函数值差异符号引导搜索方向。SABO具有参数少、结构简单、收敛快等特点,在高维复杂问题中表现优异。算法通过种群平均值保持多样性,利用符号函数确保搜索方向改进,自然平衡探索与开发。MATLAB实现显示其计算复杂度为O(N²·D),与主流群体智能算法相当。SABO不依赖生物或物理隐喻,数学基础坚实,在工程优化和机器学习领

qq_42212808的博客 165

【Python开发者必看】Windows下Python版本管理器Pyenv安装使用,轻松管理Python版本的入门与进阶指南,从此告别Python环境不兼容的噩梦

好了,关于 【Python开发者必看】Windows下Python版本管理器Pyenv安装使用,轻松管理Python版本的入门与进阶指南,从此告别Python环境不兼容的噩梦 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,也可以给我留言哦,我会一一详细的解答的。1、手动下载对应版本到 pyenv-win\install_cache 目录(如上手动操作安装步骤,文件名需匹配,如 python-3.10.0-amd64.exe)。该指令会列出,pyenv包管理工具所支持的所有python版本,

Spring Boot-Common On With You 852

Substitution控件----动态更新缓存页的部分

Substitution控件----动态更新缓存页的部分 www.Phontol.com缓存某个 ASP.NET 页时,默认情况下会缓存该页的全部输出。it.Phontol.com在第一次请求时,该页将运行并缓存其输出。it.Phontol.com对于后续的请求,将通过缓存来完成,该页上的代码不会运行。it.Phontol.com 在某些情况下,可能要缓存 ASP.NET 页,但...

dianlixiao2608的博客 138

通用抓取————6D位姿估计

这意味着算法在没有物体的先验知识(如 CAD 模型)的情况下,依然能够通过神经网络捕捉物体的外观、形状和几何特征,生成相关的 6D 位姿估计。通过输入物体类别的描述,算法能够推断出该类别物体的位姿和尺度,无需特定物体的 CAD 模型。在这个坐标空间中,物体的位姿和尺度都是已知的,基于这个标准化表示,算法可以对输入图像中的物体进行 6D 位姿和尺寸的估计。○优势: ICP 是一种非常有效的位姿优化算法,特别适合精细调整物体的位姿,确保最终估计的位姿与真实物体的点云或模型高度一致。

具身机器人和通用AI 2380

ASP.NET2.0的缓存控件和地址映射

在asp.net 2.0中,引入了很多新的控件和功能,比起之前的asp.net 1.0 和asp.net 1.1,有了革命性的改变。本文将简单介绍其中的两个新的功能:缓存功能和地址映射功能。本文以.net framework 2.0 和visual web developer 2005 beta 为工具,介绍这两个新增的功能。  一 Substitution缓存控件  在asp.net 2.0之前

网络乞丐 491

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

[转贴]vs2005 新控件之 Substitution

Substitution 控件,简单通俗的说(我的理解): 按照自己的意愿指定网页中那些部分可以被缓存,那些不能!下面是引用 慧都控件网上 downmoon  的文章Substitution控件----动态更新缓存页的部分缓存某个 ASP.NET 页时,默认情况下会缓存该页的全部输出。在第一次请求时,该页将运行并缓存其输出。对于后续的请求,将通过缓存来完成,该页上的代码不会运行。在某些情况下,可能

877

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Substitution 的用法

Substitution 的用法如下: aspx  aspx.cs public static string GetDateTime(HttpContext context) {     return "時間 : " + DateTime.Now.ToString(); }

1619

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Substitution缓存控件详解

Substitution缓存控件<br /><br />  在asp.net 2.0之前的.net 版本中,可以引入缓存功能,将大大增强应用程序的性能。但唯一不足的是,一旦使用缓存功能的话,一般都是全部使用缓存,但在有的应用中,有的时候可能需要只对页面的某些控件内容使用缓存,而其他部分将不使用缓存功能,不使用缓存功能的控件将实时地获得服务器上最新的内容。比如,一个web应用中,一些固定的网页信息,如页面底部的版权信息,或者是一些不是经常更新的信息,可以使用缓存功能,但一些比较实时的信息,如股票价格走势图等,

357

【asp.net】web控件总结

AdRotator: XML中出现的属性: <Advertisements xmlns="http://schemas.microsoft.com/AspNet/AdRotator-Advertisement-File-1.2"> <Ad> <ImageUrl>图片地址</ImageUrl> &l...

weixin_30367543的博客 78

ASP.NET Cache缓存管理基于web的缓存

<%@ OutputCacheLocation="Any" 输出缓存可以位于发出请求的客户端浏览器,代理服务器,处理请求的服务器,对应于HttpCacheability.publicLocation="Client" 输出缓存位于发出请求的客户端,对应于HttpCacheability.privateLocation="Downstream" 输出缓存可以存储在任何HTTP1.1 可缓存设备...

weixin_30950887的博客 102

以用户控件进行asp.net网页的部分缓存

建立一个用户控件 myEmployees.ascx ,在myEmployees.ascx.cs中, 加入网页10秒缓存 Code[PartialCaching(10)]publicpartialclassUserControls_myEmployees:System.Web.UI.UserControl{protectedvoidPage_Load(objectsend...

weixin_30823683的博客 65

substitution控件:在页面输出缓存状态,保持部分数据的动态更新

<%@PageLanguage="C#"%> <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <scriptrunat="server"> ...

weixin_34315485的博客 93

ASP.NET 数据缓存

数据缓存课程目标数据缓存概述页面输出缓存页面部分缓存应用程序缓存缓存概述缓存是一种在计算机中广泛用来提高性能的技术,他将访问频率高或构造成本高的数据保留在内存中。Web应用程序缓存用于在HTTP请求时保留页或者数据,并在新创建的情况下多次使用。一旦应用程序停止或者重新启动,缓存会被清除。声成高性能、可缩放的Web应用程序最重要的的因素之一是能够在首次请求时将存储在内存中,不管是数据对象还是页的某个...

郭贝贝的博客编程 1009

深入剖析ASP.NET 2.0缓冲机制(5)

<br />七、部分页面缓冲技术<br />到目前为止,你已经看到了如何在SqlDataSource控件中使用缓冲技术。本节将向你展示如何使用回寄方式缓存Substitution以便 用刷新的内容替换被缓冲的内容部分。这称作“部分页面缓冲”或“页面片断缓冲”。这是一种强有力的特征,它允许应用程序使用页面级缓冲—即使该页面的部分 是动态生成的。<br />页面片断缓冲提供对页面中一个片断进行缓冲的功能,这与缓冲整个页面形成对照。有时,整页面输出缓冲是不可行的—例如,当该页面的部分需要针对每一 个用户请求

yubanzhi的专栏 547
上一篇: ASP.NET - RadioButton 和 RadioButtonList Web 服务器控件概述
下一篇: ASP.NET - Table、TableRow 和 TableCell Web 服务器控件概述
dodream
博客等级 码龄21年 93粉丝 247原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值