您的位置:知识库 » .NET技术

ASP.NET 2.0缓存技术探讨

作者: 棋木空间  来源: 博客园  发布时间: 2009-05-12 10:46  阅读: 4981 次  推荐: 0   原文链接   [收藏]  
摘要:本文介绍通过缓存来提高网页的执行效率,包括ASP.NET Output Caching、Page Fragment Caching等内容。
[1] ASP.NET Output Caching
[2] Page Fragment Caching
[3] Data Caching
[4] SQL Cache

2. Page Fragment Caching

  作为Output的缓存的附加功能,还提供一种缓存技术,专门用于缓存用户控件或者网页中的一部分东西。可以指定没一部分或者某一个区域不被缓存。

  在页面中,指定返回参数,来决定控件被缓存的部分。使用语句VaryByparam语句指定控件更具参数来改变。

  示例:通过返回参数改变缓存内容示例

用户控件页面设置:

<%@ Control Language="vb" %>

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

调用控件页面设置:

<%@ Register TagPrefix="Acme" TagName="DataControl" Src="datactrl.ascx" %>
Body部分:
<h3>
<font face="Verdana">Fragment Caching</font></h3>
<Acme:DataControl runat="server" />
<br>
<i>页面最后被访问于:</i>

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

  接受控件传参数修改

  缓存用户控件同样还可以使用控件作为参数来源。通过指定控件作为缓存控件的参数来源,可以达到缓存控件数据的目的。

  示例:通过控件参数改变缓存内容示例

用户控件页面设置:

<%@ Control Language="VB" ClassName="FragCtrlwithAPI" %>
<%@ OutputCache Duration="60" VaryByControl="pickstate" %>
<script runat="server">
Private duration As TimeSpan
Sub Page_Load(ByVal sender As Object, ByVal E As EventArgs)
If (pickstate.SelectedValue
= "CA") Then
duration
= New TimeSpan(0, 0, 10)

CachePolicy.Duration
= duration

End If

End Sub
Sub Page_PreRender(ByVal sender As Object, ByVal e As EventArgs)
Label1.Text
= Now.ToString("G")
Label2.Tet
= Now.Add(CachePolicy.Duration).ToString("G")
End Sub
</script>
<div style="border: dotted 1px blue; padding: 5px; background-color: #eeeeee;">
<asp:DropDownList ID="pickstate" runat="server" AutoPostBack=true>
<asp:ListItem Text="CA" Value="CA" />
<asp:ListItem Text="UT" Value="UT" />
<asp:ListItem Text="MD" Value="MD" />
<asp:ListItem Text="OR" Value="OR" />
<asp:ListItem Text="MI" Value="MI" />
<asp:ListItem Text="TN" Value="TN" />
</asp:DropDownList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ Conn
ectionStrings:pubsConnectionString %>"
SelectCommand
="SELECT [au_id], [au_lname], [au_fname], [phone], [address], [city], 
[state], [zip], [contract] FROM [authors] where state=@state"
ProviderName
="System.Data.SqlClient">
<SelectParameters>
<sp:ControlParameter ControlID="pickstate" DefaultValue="CA" Name="state" Proper
tyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<asp:GridView ID="GridView1" runat="server" DataSourceID="sqldatasource1" />
<p>
控件被建立于
<asp:Label ID="Label1" runat="server" Text="Label"/><br />
控件被销毁
<asp:Label ID="Label2" runat="server" Text="Label"/><br />
</p
</div>

调用控件页面设置:

<%@ Register Src="datactrlnew.ascx" TagName="FragCtrl" TagPrefix="acme" %>
Body部分:
<acme:FragCtrl ID="FragCtrl1" runat="server" />
当前时间:
<%=Now.ToString("G") %>
<asp:Button ID="Button2" runat="server" Text="Refresh" />
0
0
标签:ASP.NET 缓存

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻