of 30 /30

Aspnet Caching

Embed Size (px)


An Introduction to caching in Asp.net

Text of Aspnet Caching

  • 1.
    • http://www.linkedin.com/in/thisisshubho
  • 2. Overview
    • Introduction to ASP.NET caching
    • Output caching
    • Fragment caching
    • Data caching
  • 3. Introduction to Caching in ASP.NET
    • Caching is the most critical factor in creating scalable, high performance Web applications
    • Caching locations
      • Web server, proxy server, and client browsers
    • Types of caching
      • Output caching
      • Fragment caching
      • Data caching
  • 4. Output Caching
    • What is output caching?
    • @ OutputCache directive and the cache object
    • Output caching attributes:
      • Duration
      • Location
      • VaryByParam
      • VaryByHeader
      • VaryByCustom
  • 5. 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
  • 6. @ OutputCache Directive and the Cache Object
    • @ OutputCache declaratively controls caching behavior
      • For .aspx, .asmx, or .ascx
    • 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
  • aspnet_regsql.exe -S %Server% -U %uid% -P %pwd% -d %Database% -t %TableName% -et
18. Page/Fragment output cache : Best practices
  • Donts
  • 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
  • msdn.microsoft.com/en-us/library/ms972362.aspx