缓存某个 ASP.NET 页时,默认情况下会缓存该页的全部输出。在第一次请求时,该页将运行并缓存其输出。对于后续的请求,将通过缓存来完成,该页上的代码不会运行。
在某些情况下,可能要缓存 ASP.NET 页,但需根据每个请求更新页上选定的部分。例如,您可能要缓存某页的很大一部分,但需要动态更新该页上的与时间高度相关的信息。
可以使用 Substitution 控件将动态内容插入到缓存页中。Substitution 控件不会呈现任何标记。您需要将该控件绑定到页上或父用户控件上的方法中。您要自行创建静态方法,以返回要插入到页中的任何信息。由 Substitution 控件调用的方法必须符合下面的标准:
注意,Substitution 控件无法访问页上的其他控件,也就是说,您无法检查或更改其他控件的值。但是,代码确实可以使用传递给它的参数来访问当前页上下文。
在页运行时,Substitution 控件会调用该方法,然后用从该方法的返回值替换页上的 Substitution 控件。
下面的代码示例演示如何使用 Substitution 控件在缓存页上创建动态更新的内容。页的Load事件中的代码用当前时间来更新Label控件。因为页的缓存持续时间已设置为 60 秒,所以 Label 控件的文本不会更改,即使在 60 秒的时间内多次请求了该页。页上的 Substitution 控件调用静态方法GetTime
,该方法将以字符串的形式返回当前时间。每次刷新页时,Substitution 控件表示的值都会更新。
下面用两种方式来未演示这个特性:
代码一:
.lineBorderBlue1{BORDER-TOP: #999999 1px groove;BORDER-BOTTOM: #999999 1px groove;BORDER-LEFT: #999999 1px groove;BORDER-RIGHT: #999999 1px groove;background-color:#efefef;}
<script runat="server"> static string getCurrentTime(HttpContext context) { return DateTime.Now.ToString(); } void Page_Load(object sender, EventArgs e) { Response.Cache.SetExpires(DateTime.Now.AddSeconds(600)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true);
} </script>
<div> <h4> 在缓存页面插入动态内容--使用substitution控件演示</h4> <p> Cache Time:<%= DateTime.Now.ToString() %> </p> <p> <b>Real Time:<asp:Substitution ID="Substitution1" runat="server" MethodName="getCurrentTime" /> </b> </p> </div> |
代码二:
.lineBorderBlue1{BORDER-TOP: #999999 1px groove;BORDER-BOTTOM: #999999 1px groove;BORDER-LEFT: #999999 1px groove;BORDER-RIGHT: #999999 1px groove;background-color:#efefef;}
<%@ OutputCache Duration="600" VaryByParam="none" %>
<script runat="server"> static string getCurrentTime(HttpContext context) { return DateTime.Now.ToString(); }
</script>
<div> <h4> 在缓存页面插入动态内容--使用substitution控件演示</h4> <p> Cache Time: <%= DateTime.Now.ToString() %> </p> <p> <b>Real Time:<asp:Substitution ID="Substitution1" runat="server" MethodName="getCurrentTime" /> </b> </p> </div> |
结果如图:
分享到:
相关推荐
4. 在页面的缓存时间内,每次对页面的请求将重用缓存的内容,但Substitution控件调用的方法会在每次请求时执行,并显示最新的返回值。 在实际应用中,可以通过两种方式来设置缓存:一种是使用Response.Cache对象...
在需要动态更新页面中的一些数据,比如当前时间、用户信息等,而其他内容可以进行缓存以提高性能的场景下,Substitution控件特别有用。 在***页面中,可以通过设置@OutputCache指令来指定页面或用户控件缓存的属性...
其余未被 Substitution 控件覆盖的部分则继续享受整页缓存带来的速度提升。 3. 应用程序缓存:相比页面缓存,应用程序缓存更加灵活,允许开发者通过代码动态地控制缓存。开发人员可以自定义何时将数据放入缓存,...
##### Substitution控件:动态内容与缓存的完美结合 在缓存网页时,如何处理需要频繁更新的动态内容是一大挑战。为了解决这个问题,ASP.NET 2.0引入了`Substitution`控件,特别是`Post-CacheSubstitution`,它允许...
- 上述代码演示了如何在一个页面的部分内容中使用回调缓存,使得这部分内容可以在缓存之外实时更新。 **用户控件参数缓存示例**: ```html ``` - 这段代码展示了如何根据用户控件的状态变化来更新缓存。 ###...
缓存后替换通常通过 Substitution 控件实现,用于页面部分的动态替换和缓存。 14. ASP.NET RSS 发布: RSS 是基于 XML 的格式,对格式要求严格。Repeater 控件可以用于发布 RSS 内容,因为它是数据绑定控件,可以...
第10章 Web页面设计 221 10.1 网页外观设计 222 0396 将CSS样式表应用到页面中 222 0397 在页面的源码中直接定义样式表 222 0398 动态加载主题到页面中...0496 使用Substitution控件在缓存页面插入内容 290
5.19.4 动态缓存更新控件(Substitution) 5.20 小结 第6章 Web窗体的高级控件 6.1 登录控件 6.1.1 登录控件(Login) 6.1.2 登录名称控件(LoginName) 6.1.3 登录视图控件(LoginView) 6.1.4 登录状态控件...
5.19.4 动态缓存更新控件(Substitution) 5.20 小结 第6章 Web窗体的高级控件 6.1 登录控件 6.1.1 登录控件(Login) 6.1.2 登录名称控件(LoginName) 6.1.3 登录视图控件(LoginView) 6.1.4 登录状态控件...
5.19.4 动态缓存更新控件(Substitution) 5.20 小结 第 6 章 Web 窗体的高级控件 6.1 登录控件 6.1.1 登录控件(Login) 6.1.2 登录名称控件(LoginName) 6.1.3 登录视图控件(LoginView) 6.1.4 登录状态控件...
5.19.4 动态缓存更新控件(Substitution) 5.20 小结 第6章 Web窗体的高级控件 6.1 登录控件 6.1.1 登录控件(Login) 6.1.2 登录名称控件(LoginName) 6.1.3 登录视图控件(LoginView) 6.1.4 登录状态控件...
5.19.4 动态缓存更新控件(Substitution) 5.20 小结 第6章 Web窗体的高级控件 6.1 登录控件 6.1.1 登录控件(Login) 6.1.2 登录名称控件(LoginName) 6.1.3 登录视图控件(LoginView) 6.1.4 登录状态控件...
5.19.4 动态缓存更新控件(Substitution) 5.20 小结 第6章 Web窗体的高级控件 6.1 登录控件 6.1.1 登录控件(Login) 6.1.2 登录名称控件(LoginName) 6.1.3 登录视图控件(LoginView) 6.1.4 登录状态控件...
14.3.2 TreeView控件的各个部分 472 14.3.3 在XML文件中绑定TreeView控件 472 14.3.4 在TreeView中选择多个选项 475 14.3.5 在TreeView控件中指定定制的图标 478 14.3.6 指定用于连接节点的线条 479 14.3.7 ...
20.1.3 Post-Cache Substitution683 20.1.4 HttpCachePolicy和 客户端高速缓存685 20.2 编程高速缓存687 20.2.1 使用Cache对象 高速缓存数据687 20.2.2 高速缓存依赖性688 20.3 使用SQL Server高速 缓存...
在一些情况下,可能需要通过回调函数来动态生成缓存的内容,这时可以结合<asp:Substitution>控件使用,实现在缓存结果中动态替换部分内容。 数据库缓存涉及将数据库查询的结果缓存到内存中,以减少数据库的访问次数...
SubstitutionSample Substitution控件的使用实例。 WebPartZoneSample WebPart部件的使用实例。 WizardSample 向导控件的使用实例。 <br>第10章(\C10) 示例描述:本章示例展现了如何处理...
6 <br>0014 如何锁定窗体中的控件 6 <br>0015 统一窗体中控件的字体设置 7 <br>0016 通过“格式”菜单布局窗体 7 <br>0017 起始页中的“Visual Studio开发人员新闻” 7 <br>1.3 MSDN帮助的...
- **实例**:在图形界面开发中,不同的操作系统可能需要不同的窗口控件,通过工厂方法模式可以实现跨平台的UI组件创建。 #### 6. **抽象工厂模式(Abstract Factory Pattern)** - **定义**:提供一个接口,用于...
4. **页面级特殊区域不进行缓存**:通过使用`<asp:Substitution>`控件,可以指定页面的一部分不进行缓存,这对于那些需要频繁更新数据的区域非常有用。 ```html <asp:Substitution ID="Substitution1" runat=...