Microsoft ASP.NET: An Overview of Caching
2
Overview
Introduction to ASP.NET caching Output caching Data caching Difference between Data Caching and Output
Caching
3
What is Caching
Cache = “secret store” Armies: cache weapons Squirrels: cache nuts Computers: cache data
Benefits of caching data: Reuse
Process once, reuse many times Faster, cheaper
Caching means temporary storage of data in memory that is highly-demanding and frequently used in order to accelerate performance and for quick access to various essential information.
4
Output Caching
What is output caching? @ OutputCache directive and the cache
object Output caching attributes:
Duration Location VaryByParam VaryByHeader VaryByCustom
5
Output (or) Page Caching
This is the most simplest form of caching. caches the output of a page (or portions of it) so that content of page are not generated every time it is loaded.
6
What Is Output Caching?
Pages that use the output cache are executed one time, and the page results are cached
The pre-executed page is then served to later requests
Performance and scalability both benefit Server response times reduced CPU load reduced
Appropriate caching of pages affects site performance dramatically
7
@ OutputCache Directive and the Cache Object
@ OutputCache declaratively controls caching behavior For .aspx, .asmx, or .ascx
The cache object programmatically controls caching behavior
<%@ OutputCache Duration="600“ Location="Any“VaryByParm=“none” %>
Is equivalent to:[C#]Response.Cache.SetExpires(DateTime.Now.AddSeconds(600));Response.Cache.SetCacheability(HttpCacheability.Public);
8
OutputCache Members: Duration and Location
Duration sets the time to cache the output In seconds Required
Location sets the location to cache the output Server: The output is held in memory on the Web server
and is used to satisfy requests Downstream: A header is added to the response to
indicate to proxy servers to cache the page Client: A header is added to the response indicating to
browsers to cache the page Any: Output cache can be located on any of these
locations None: No output caching is turned on for the item
<%@ OutputCache Duration="600" Location="Any“VaryByParam=“none” %>
9
OutputCache Members: VaryByParam and VaryByHeader
VaryByParam This is a mandatory parameter. This is used to
mention whether variables in the request should result in separate cache entries.
“none" can be used to specify no separate cache requirement.
"*" indicates create a new cache entires for different set of variables.
<%@ OutputCache Duration="60" VaryByParam="none" %>
10
VaryByHeader , VaryByCustom
VaryByHeader and VaryByCustom are primarily used to customise look and feel of the on the client accessing site.
<%@ OutputCache Duration="60“ VaryByParam="None" VaryByCustom="browser" %>
11
Data Caching
What is data caching? How to insert objects into the cache Cache dependencies
12
Data Caching
The basic principle of data caching is that you add items that are expensive to create to a special built in collection object
How to insert items into cache
Cache.Insert(key,dependencies,absoluteExpiration,_Slidingexpiration)
13
Cache.Insert parametersParameter Description
Key A string that assigns a name to the cached item
Item The actual object that is to be cached
Dependencies A cache dependency object that allows you to create a dependency
absoluteExpiration A Datetime object representing the time at which the item will be removed from cache
14
Parameter Description
slidingExpiration A Timespan object represents how long the ASP.NET will wait between requests before removing a cached item
Cache.Insert("student", ds, Nothing, DateTime.MaxValue, TimeSpan.FromMinutes(2))
15
Cache dependency
Suppose a local XML file is cached into the cache object
Incase the XML file is updated and it needs to be reloaded once again but due to cache there may be latency
Cache dependencies overcomes this dilemma
It makes the object to drop from the cache the moment it is amended
16
DatabaseCache
Browser
Data Caching
Data
Cache dependency
17
Data Caching Output Caching
Data caching allows a web
application to store commonly used
objects so that they are available
for use across all pages in the site.
Page caching allows the server to
store a copy of the output of a
dynamic page, and to use this to
respond to requests instead of
running the dynamic code again.
Data caching is the storing of data
internal to a web application, such
that different pages can access the
data.
If you cache a page, you store a copy
of the output of the page
18
Data Caching Output Caching
The data cache is available through the Cache property of either the Page or the HttpContext class
There are three approaches to setting page caching.
@OutputCache directive in the top of the ASP.NET page.
cache options via code.
The third option is to use meta data
attributes in code
Data remains in the cache for the time specified by the DateTime parameter of the Cache.Insert method
Pages remain in the cache for some length of time, determined by the Duration parameter. The value is set in seconds.
19
Cache Dependencies
File-based dependencies Cached item invalidated when files change
Key-based dependencies Cached item invalided when another cached item
changes Time-based dependencies
Absolute time-based invalidations Sliding time-based invalidations
20
Cache Dependency
File based dependency Key based dependency Time based dependency
21
Key-based dependency invalidates a particular Cache item when another Cache item changes.
For example, if instead of loading our ProductData from a database, we loaded it from an XML file
Dim dom As XmlDocument() dom.Load(Server.MapPath("product.xml") Cache("ProductData") = dom
22
Dim dependency as new CacheDependency(Server.MapPath("product.xml"))
Cache.Insert("ProductData", dom, dependency)
23
Key based dependency
24
Time based dependency
Time-based dependency simply expires the item at a defined point in time.We have two options for time based dependency Absolute—Sets an absolute time; for example,
current time + 10 minutes for the Cache entry to expire.
Sliding—Resets the time for the item in the Cache to expire on each request