caching chapter 12. caching for high-performance apps caching: storing frequently-used items in...
TRANSCRIPT
Caching
• For high-performance apps• Caching: storing frequently-used items in
memory– Accessed more quickly
• Cached Web Form bypasses:– server’s processing HTML– Server’s running web form to create a response
• Response is processed directly from memory
Caching Web Forms
• Good Caching Candidates– Frequently used– Contains fairly static data
• First series of Demos Use OutputCache directive
• Demos show different ways to control caching• Demo 1 – WebFormCaching1.aspx
– Response loaded into memory for 60 secs (on client)– Subsequent requests during period get stored
response– After 60 secs new response is cached
Another way to control Caching
• Previous examples used OutputCache directive
• From code, use Response object’s Cache property
• Returns a HttpCachePolicy object
• HttpCachePolicy members are similar to attributes of OutputCache directive
Multiple Caches from Single Web Form
• Demo2 – WebFormCaching2.aspx– VaryByParam attribute– New form cached when query string or HTTP
POST varies– Demo – up to 5 different cached responses
• One for each time zone
Vary by Response Header
• Demo 3 – VaryByHeader.aspx– Different forms cached depending on
Language Requested in Response.Header– Change regional settings in Windows Control
Panel – One form cached per language requested
Cache Response / Custom String
• Demo 4 – CustomString.aspx
• Custom string set in Global.aspx
• Demo caches a response based on the browser used to request the page– (Netscape == Mozilla??)
Controlling Caching thru Code
• Demo 5 – UsingResponseCache• Uses Response.Cache object• Sets Cache duration at 5 seconds• Similar to Duration attribute of
OutputCache directive:• <%@ OutputCache Duration="5"
VaryByParam="None" Location="Any" %>
Caching parts of a page
• Given: Large table that seldom varies
• Put table in user control and cache user control response
• Fragment caching
Caching Part of a Web Form with a User Control
• Place controls and content in a web user control
• Set caching attributes for that control
• Create an instance of the user control on the web form
• Demo 6 –PartialCaching1.aspx– Uses PartialCaching1.ascx
Caching Application Data
• Cache frequently used data
• Usually Read-Only
• To store changed cache data before it is removed from memory:– Use CacheItemRemovedCallback delegate to
save changes
Cache Object
• Intrinsic object
• Stores frequently used items (quick retrieval)
• Global – available from anywhere in web app
• Similar to Application Object
Ways to store data in Cache object
• Assignment– Assign a value to a key in the Cache object– Cache(“NewItem”) = “Some String Data”
• Insert method– Uses (optional) parameters to set policies and
duration
• Add method– Parameters are required– Returns a reference to cached data
Using Cache
• Demo 7 – UsingCache.aspx
• Walkthru
• Stores items in Cache – Load event
• Retrieve item from Cache – PreRender event
How Long does an item stay in Cache?
• Add/Insert Parameters
• Really these give only indirect control
• When memory gets low, ASP.NET:– Removes expired members from cache– Unloads other members based on their
priority and when last accessed
Using Cache Data before it is Removed from Memory
• Add/Insert Methods – onRemoveCallback
• Demo 8 – DataCache1.aspx
Updating Cache when Data Changes
• Data stored in cache may represent data stored elsewhere (say in a database).
• Establish relationship between cached data and external:– File– Folder– Group of files
• Use Add/Insert dependency parameter– Accepts a CacheDependency object
CacheDependency object
• Identifies file, folder, or set of files to watch for change
• ASP.NET checks timestamps of objects in CacheDependency object
• Compares with DateTime for cached item
• If later, unloads the item from the cache
Using CacheDependency object
• Demo 9 – DataCache2.aspx
• NewItem in Cache is linked to NewItem.TXT file
• When new data is written to the file, data is removed from Cache
Demo 10 – C#
• Demo10 – CachingLab.aspx– Displays a list of customers from Northwind db– Users select from dropdown list– Click button to view orders in data grid
• Web Form cached for 1 minute• Since response can vary by which customer is
selected, use VaryByParam to store multiple responses – one for each selected customer
Page_Load Event
• CustList is a ListItemCollection object
• If this is the first time through (IsPostback)– If the list is not in the cache
• Store it in the cache (CacheCustList())
– Else • take the Customer List out of the cache
– Move the CustList Details to the DropDownList
CacheCustList Method
• Connect to NorthWind
• Create a DataReader for the Customer records
• For each row provided by the datareader– Add the Customer Data to the CustList
• Put the CustList in the Cache – 5 min
• Close the connection
butGetOrders_Click
• Create a new dataset to hold the orders for the selected customer
• If the Order Data for this customer is not in the Cache, If IsNothing(Cache(drpCustList.SelectedItem.Value)) – Put it there – CacheOrders
• Else– Set the dataset = the Cached orders
• Bind the order data to the grid