Here in this part of the article we will see how we can use page caching in programming and how to use create file dependency for page caching.
So Lets get started with following steps:
Step 1. Create a website with a page PageCaching.aspx with the following markup
Note that unlike our previous article for page caching we don't use <%@ OutputCache Duration="60" VaryByParam="none" %> here.. instead we will do that in code.
Step 2. In page load event of the page
Step 3. The code is self descriptive. Now when you run the page and refresh the page you will see that the time remain constant because the page is being cached.
Now change the content of the file dependentfile.text which is in your project before 60 sec as this is the second criteria.. as soon as you changes file and save it and then refreshes your page the time get changed.
Note that whatever comes first . i.e either 60 second expires or dependentfile.txt changes the cached version of the page will be discarded and regenrated.
More on Caching in future articles..
So Lets get started with following steps:
Step 1. Create a website with a page PageCaching.aspx with the following markup
<%@ Page Language="C#"
AutoEventWireup="true" CodeFile="PageCaching.aspx.cs" Inherits="_Default"
%>
<!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 runat="server">
<title>Page
Caching</title>
<script type="text/javascript" language="javascript">
function
ShowTime()
{
var
dt = new Date();
document.getElementById("<%= TextBox2.ClientID %>").value
= dt.toLocaleTimeString();
window.setTimeout("ShowTime()", 1000);
}
</script>
</head>
<body onload="ShowTime();">
<form id="form1" runat="server">
<div>
<h1> Output
Caching Demo(Using File Dependency)<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></h1>
</div>
<div>
This page is cached for a duration
of 60 seconds or dependentfile.txt changes whichever first. When this page was
last cached the date/time was <span style="color:Red;"> <%=DateTime.Now.ToLongTimeString()%>. </span>
<br />Refresh
repeatedly and <b>you'll see that this time remains constant until
the cache is expired</b>, then it is
updated to the current time.
<br />The reason
this time stays constant is because the HTML generated by this ASP.NET Web page
is cached using Output Caching. <br />To enable
Output Caching, simply add the following declaration to the top of your ASP.NET
Web page:
<asp:Label ID="lblOutputCache" runat="server" BorderWidth="1" BackColor="ButtonHighlight" Text="< %@OutputCache Duration='durationInSeconds'
VaryByParam='varyBy' % >"></asp:Label>
</div>
<div>
<h3>Removing
Cache:</h3>
<span>following
button will remove the Cache and each time following button is <br />
clicked a fresh version will be seen.</span>
<asp:Button ID="btnRemoveCache" runat="server" Text="Remove Cache Version"
onclick="btnRemoveCache_Click" />
</div>
</form>
</body>
</html>
Note that unlike our previous article for page caching we don't use <%@ OutputCache Duration="60" VaryByParam="none" %> here.. instead we will do that in code.
Step 2. In page load event of the page
protected void Page_Load(object
sender, EventArgs e)
{
string
fileDependencyPath = Server.MapPath("~/dependentfile.txt");//may be somekind of config file
Response.AddFileDependency(fileDependencyPath);
//or we can use
AddFileDependencies if we want a multiple files on which this page is to be
dependent.
//so now it know
this page is depends on that file unless that file changes this page will be
cached.
//we can set
some other policy information too.
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));//60 sec from now
//the file
will not be cached whenever the file has been changed or the 60 sec has been
expired whichever
//comes
first.
//we will set
cachebility
Response.Cache.SetCacheability(HttpCacheability.Public);
//we want
this to be valid until expires.
Response.Cache.SetValidUntilExpires(true);
}
Step 3. The code is self descriptive. Now when you run the page and refresh the page you will see that the time remain constant because the page is being cached.
Now change the content of the file dependentfile.text which is in your project before 60 sec as this is the second criteria.. as soon as you changes file and save it and then refreshes your page the time get changed.
Note that whatever comes first . i.e either 60 second expires or dependentfile.txt changes the cached version of the page will be discarded and regenrated.
More on Caching in future articles..
No comments:
Post a Comment