ASP.NET Tutorial/Cache/Expiration
Expiring the Page Output Cache Programmatically
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">
<div>
<%= DateTime.Now.ToString("T") %>
<hr />
<asp:GridView
id="grdProducts"
DataSourceID="srcProducts"
Runat="server" />
<asp:SqlDataSource
id="srcProducts"
ConnectionString="<%$ ConnectionStrings:Products %>"
SelectCommand="SELECT Title, Director FROM Products"
Runat="server" />
<br /><br />
<a href="NextPage.aspx">Add Product</a>
</div>
</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">
<div>
<h1>Add Product</h1>
<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" />
</div>
</form>
</body>
</html>
Using an Absolute Cache Expiration Policy
<%@ 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">
<div>
<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" />
</div>
</form>
</body>
</html>
Using a Sliding Cache Expiration Policy
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">
<div>
<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" />
</div>
</form>
</body>
</html>