While the HTML response associated to a page is stored in cache, the sent requests from this page will not be processed by the server, this implies a considerable reduction of time responses
In order to the server stores the HTML response associated to a page the first time it makes a request we have to apply the OutPutCache directive in our ASP view
<%@OutPutCache Duration="30" VaryByParam="*" %>
Where the attribute Duration indicates the time in seconds that the response will be held in cache. Through the attribute VaryByParam we indicate to the server how many kinds of responses should store, if the value is "none", only stores one, with the value "*" stores many different types of responses as different parameter values be added to the url in the request
The class HttpCachePolicy provides the control of cache through code. Every response has an object of type HttpCachePolicy associated, and we can find it in the property Cache of the Response object. Its main properties and methods are the next
- VaryByParams: controls the value of the attribute VaryByParam in the OutPutCache directive
- SetExpires: controls the value of the attribute Duration in the OutPutCache directive
- SetCacheability: this method controls the site where the response will be stored through the enum HttpCacheability, which possible values are the next:
· Private: the response will be cached in the client side, storing a copy of the response in the browser
· Public: The response is cached on both the client and the server and in intermediate proxy servers
· Server: The response is cached only in the server side
The cache memory of the server allows also storing application data in explicit way. The access to cache is key-value pair based
In this example we are adding a float type object to cache stored in the client side for 60 seconds, and reading it in the button's method
protected void Page_Load(object sender, EventArgs e)
{
Response.Cache.SetCacheability(HttpCacheability.Private);
this.Cache.Insert("data1", 1234.5F, null, DateTime.Now.AddSeconds(60),
System.Web.Caching.Cache.NoSlidingExpiration,
System.Web.Caching.CacheItemPriority.High, null);
}
protected void btnReadCache_Click(object sender, EventArgs e)
{
object data = getDataCache("data1");
if (data != null)
lblData.Text = data.ToString();
else
lblData.Text = "Time expiration exceeded for data1 key";
}
private object getDataCache(string key)
{
if (this.Cache.Get(key) != null)
return this.Cache[key];
else
return null;
}
<METHOD SOFTWARE © 2013>