ASP.NET Tutorial/Cache/User Control

Материал из .Net Framework эксперт
Версия от 14:57, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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>