The cache object programmatically controls caching
behavior
Is equivalent to: [C#]
Response.Cache.SetExpires(DateTime.Now.AddSeconds(600));
Response.Cache.SetCacheability(HttpCacheability.Public);
7. 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
public String State {
get { return state.Value; }
set { state.Value = State; } }
public String Country {
get { return country.Value; }
set { country.Value = Country; } }
13. VaryByControl
VaryByControl
The sixth attribute supported by OutputCache
Only supported in user control caching
Caching is based on user control properties
14. Post cache substitution
Allows to substitute (Replace/modify) a (Small) portion of a
cached page output
Very useful to use where little content in the rendered page
varies depending on parameter(s)
Use an asp:substitution to implement the Post cache
substitute
Provide a method for the call back, that renders the markup for
the substitution.
15. SQL dependency
Output Caching/ Fragment caching could be configured to use SQL
dependency so that, cached Page/User control will be updated when
corresponding table(s) data is/are updated
SQL dependency is usable in Both SQL server 2000 and SQL server
2005
16. SQL dependency
The Polling model has to be used in SQL server 2000 to use
Cache dependency
--Application Polls data after a given period of time
--Requires more effort in configuring
--More resource intensive
The Notification model can be used in SQL server 2005 to use
Cache dependency
--Requires less effort in configuring
--DB server Notifies application with Updates
--Less resource intensive
17. SQL dependency:Example
In ASPX, or, ASCX page, use
In web.config, use the following configuration:
Enable SQL server for SQL dependency: Execute following command
in the command prompt
Generally use of output cache in pages that contain input forms
is not a good idea.
Generally, it is good practice to not to use output caching in
pages that requires authentication.
Dont use output cache for static page.
Dont use output cache for page that contains lighter
content
Dont use output cache for page that generally executes
faster
19. Page/Fragment output cache : Best practices
Dos
Use output cache in public pages
Use output cache for pages that executes slower
Use output cache for pages that contains heavy contents
Use output cache for pages that are frequently being
accessed.
Use Fragment cache (Output cache at User controls) to cache
varying common dynamic contents across the pages
20. Page/Fragment output cache : Best practices
Dos
Use Post cache substitution for fewer contents in the pages
that vary across different parameters
Use SQL dependency (With longer durations) with output cache
for pages that uses data that are very frequently accessed,
expensive to retrieve and that are not changed often.
Set smaller durations for output cache in pages that varies too
much depending on input parameters, and/or, that are not frequently
accessed
21. Page/Fragment output cache : Best practices
Dos
Use moderate duration for pages that are less
frequently accessed and/or that doesnt vary too much with input
parameters
Use long duration for pages that are very frequently accessed
and/or that vary little with input parameters
Use Output cache profiles for better manageability (Configuring
profiles in web.config)
22. Data Caching
What is data caching?
Working with the cache object
Cache dependencies
Scavenging memory
Using callbacks with caching
23. What Is Data Caching?
The data cache holds application data such as strings,
datasets, and other objects
Adding items to the data cache is easy
Although similar to the familiar application variables model,
it is much more powerful
Cache [counter] = mycount.text Application[counter] = mycount.text
24. Working with the Cache Object
Cache object features
Dependencies allow logic to invalidate cached items
Scavenging (automatic expiration)
Callbacks when an item is removed from cache
To use dependencies or callbacks, use Cache.Insert or
Cache.Add
Code using cached items must be able to both create or insert,
and retrieve cached items
Public DataSet GetProductData() { if (Cache["ProductData] = null) {
Cache["ProductData] = LoadDataSet(); } Return Cache["ProductData];
} 25. 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
SQL dependencies
SQL based invalidations
26. Scavenging Memory
Automatic system that initiates when memory becomes scarce
Tag cached items with relative importance
CacheItemPriority
CacheItemPriorityDecay
Items must be added to cache using .Add or .Insert to make use
of these enumerations
27. Using Callbacks with Caching
Create Callbacks with this delegate:
CacheItemRemovedCallback
Callbacks are used to receive notification when an item is
evicted from the cache
Cleanup
Update
Recreate
Logging
Items must be added to caching using .Add or .Insert to use
callback functionality
28. Caching in Web Farm
ASP.NET cache is not usable in a web farm scenario
(Load-balanced distributed deployment).
The .NET remoting could be used to develop a cache server, or,
third party caching provider can be used (Ncache, Distributed Cache
etc)
29. Review
Code that uses items from the data cache must be able to create
the object, load the cache, or retrieve the object before using
it.
Caching can hide problems. Test without caching.
Use tracing, performance counters, and stress software to
identify caching wins.
30. More information
aspnet .4guysfromrolla.com/articles/022802-1. asp x