ASP.NET Tutorial/Cache/User Control — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Текущая версия на 14:57, 26 мая 2010
Содержание
Caching with a User Control
<source lang="csharp">
OutputCache directive causes the contents of the User Control to be cached in memory for a maximum of 10 minutes (600 seconds). File: Control.ascx <%@ Control Language="C#" ClassName="Products" %> <%@ OutputCache Duration="600" VaryByParam="none" %> User Control Time: <%= DateTime.Now.ToString("T") %> <asp:GridView
id="grdProducts" DataSourceID="srcProducts" Runat="server" />
<asp:SqlDataSource
id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Title,Director FROM Products" Runat="server" />
File: ShowUserControlCache.aspx <%@ Page Language="C#" %> <%@ Register TagPrefix="user" TagName="Products" Src="~/Control.ascx" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show User Control Cache</title>
</head> <body>
<form id="form1" runat="server">
Page Time: <%= DateTime.Now.ToString("T") %>
<user:Products id="Products1" Runat="server" />
</form>
</body> </html></source>
Creating a User Control Cache File Dependency
<source lang="csharp">
File: Control.ascx <%@ Control Language="C#" ClassName="ProductFileDependency" %> <%@ OutputCache Duration="9999" VaryByParam="none" %> <script runat="server">
void Page_Load() { CacheDependency depend = new CacheDependency(MapPath("~/Products.xml")); this.CachePolicy.Dependency = depend; }
</script> User Control Time: <%= DateTime.Now.ToString("T") %>
<asp:GridView
id="grdProducts" DataSourceID="srcProducts" Runat="server" />
<asp:XmlDataSource
id="srcProducts" DataFile="Products.xml" Runat="server" /></source>
Programmatically caching a User Control.
<source lang="csharp">
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <script runat="server">
void Page_Load() { PartialCachingControl cacheMe = (PartialCachingControl)Page.LoadControl("Control.ascx"); cacheMe.CachePolicy.SetExpires(DateTime.Now.AddSeconds(15)); PlaceHolder1.Controls.Add(cacheMe); lblCacheDuration.Text = cacheMe.CachePolicy.Duration.ToString(); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Show Dynamic User Control</title>
</head> <body>
<form id="form1" runat="server">
Cache Duration: <asp:Label id="lblCacheDuration" Runat="server" />
<asp:PlaceHolder id="PlaceHolder1" Runat="server" />
</form>
</body> </html>
File: Control.ascx <%@ Control Language="C#" ClassName="Products" %> <%@ OutputCache Duration="600" VaryByParam="none" %> User Control Time: <%= DateTime.Now.ToString("T") %> <asp:GridView
id="grdProducts" DataSourceID="srcProducts" Runat="server" />
<asp:SqlDataSource
id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Title,Director FROM Products" Runat="server" /></source>
Sharing a User Control Output Cache
<source lang="csharp">
File: Control.ascx <%@ Control Language="C#" ClassName="SharedProducts"%> <%@ OutputCache Duration="600" VaryByParam="none" Shared="true" %> User Control Time: <%= DateTime.Now.ToString() %> <asp:GridView
id="grdProducts" DataSourceID="srcProducts" Runat="server" />
<asp:SqlDataSource
id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" SelectCommand="SELECT Title,Director FROM Products" Runat="server" /></source>