ASP.NET Tutorial/Cache/Expiration
Содержание
Expiring the Page Output Cache Programmatically
<source lang="csharp">
File: Default.aspx <%@ Page Language="C#" %> <%@ OutputCache Duration="3600" VaryByParam="none" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Product List</title>
</head> <body>
<form id="form1" runat="server">
<%= 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" />
<a href="NextPage.aspx">Add Product</a>
</form>
</body> </html> File: NextPage.aspx <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">
protected void dtlProduct_ItemInserted(object sender, DetailsViewInsertedEventArgs e) { HttpResponse.RemoveOutputCacheItem(Page.ResolveUrl("~/Default.aspx")); Response.Redirect("~/Default.aspx"); }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>Add Product</title>
</head> <body>
<form id="form1" runat="server">
Add Product
<asp:DetailsView id="dtlProduct" DefaultMode="Insert" DataSourceID="srcProducts" AutoGenerateRows="false" AutoGenerateInsertButton="true" Runat="server" OnItemInserted="dtlProduct_ItemInserted"> <Fields> <asp:BoundField DataField="Title" HeaderText="Title:" /> <asp:BoundField DataField="Director" HeaderText="Director:" /> </Fields> </asp:DetailsView> <asp:SqlDataSource id="srcProducts" ConnectionString="<%$ ConnectionStrings:Products %>" InsertCommand="INSERT Products (Title, Director) VALUES (@Title, @Director)" Runat="server" />
</form>
</body> </html></source>
Using an Absolute Cache Expiration Policy
<source lang="csharp">
<%@ Page Language="C#" %> <!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>DataSource Absolute Cache</title>
</head> <body>
<form id="form1" runat="server">
<asp:GridView id="grdProducts" DataSourceID="srcProducts" Runat="server" /> <asp:SqlDataSource id="srcProducts" EnableCaching="True" CacheDuration="3600" SelectCommand="SELECT * FROM Products" ConnectionString="<%$ ConnectionStrings:Products %>" Runat="server" />
</form>
</body> </html></source>
Using a Sliding Cache Expiration Policy
<source lang="csharp">
The cache duration is set to 15 seconds. <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <script runat="server">
protected void srcProducts_Selecting(object sender, SqlDataSourceSelectingEventArgs e) { lblMessage.Text = "Selecting data from database"; }
</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1" runat="server">
<title>DataSource Sliding Cache</title>
</head> <body>
<form id="form1" runat="server">
<asp:Label id="lblMessage" EnableViewState="false" Runat="server" /> <asp:GridView id="grdProducts" DataSourceID="srcProducts" Runat="server" /> <asp:SqlDataSource id="srcProducts" EnableCaching="True" CacheExpirationPolicy="Sliding" CacheDuration="15" SelectCommand="SELECT * FROM Products" ConnectionString="<%$ ConnectionStrings:Products %>" OnSelecting="srcProducts_Selecting" Runat="server" />
</form>
</body> </html></source>