Overview  Introduction to ASP.NET caching  Output caching  Fragment caching  Data caching 1

  • View
    219

  • Download
    2

Embed Size (px)

Text of Overview  Introduction to ASP.NET caching  Output caching  Fragment caching  Data...

  • Slide 1
  • Overview Introduction to ASP.NET caching Output caching Fragment caching Data caching 1
  • Slide 2
  • 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
  • Slide 3
  • Where to Cache Client-side Browsers Images Pages Reduces download times Server-side Reduces server processing load
  • Slide 4
  • 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
  • Slide 5
  • Output Caching What is output caching? @ OutputCache directive and the cache object Output caching attributes: Duration Location VaryByParam VaryByHeader VaryByCustom 5
  • Slide 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 6
  • Slide 7 Is equivalent to: [C#] Response.Cache.SetExpires(DateTime.Now.AddSeconds(600)); Response.Cache.SetCacheability(HttpCacheability.Public);">
  • @ OutputCache Directive and the Cache Object @ OutputCache declaratively controls caching behavior For.aspx,.asmx, or.ascx The cache object programmatically controls caching behavior 7 Is equivalent to: [C#] Response.Cache.SetExpires(DateTime.Now.AddSeconds(600)); Response.Cache.SetCacheability(HttpCacheability.Public);
  • Slide 8 ">
  • OutputCache Members: Duration and Location Duration sets the time to cache the output(expiration time) 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 8 ">
  • OutputCache Members: VaryByParam and VaryByHeader VaryByParam The cache stores multiple copies of a page based on specific Querystring or Form parameters and any combinations thereof VaryByHeader The cache stores multiple copies of a page based on HTTP headers 9
  • Slide 10
  • OutputCache Members: VaryByCustom VaryByCustom If the value is Browser, cache varies by browser type and major version If the value is a custom string, you must override HttpApplication.GetVaryByCustomString in the Global.asax and implement your own caching logic 10
  • Slide 11
  • Fragment Caching What is fragment caching? VaryByControl Nested cached user controls Cached controls are not programmable 11
  • Slide 12 12">
  • 12
  • Slide 13
  • What Is Fragment Caching? Just as you can vary the versions of a page that are output cached, you can output cache regions of a page Regions are defined based on user controls User controls contain their own @OutputCache directive Fragment caching supports VaryByParam VaryByControl Location not supported because fragments must reside on server to be assembled 13
  • Slide 14 VaryByParam="*"%> public String"> VaryByParam="*"%> public String State { public String State { get { return state.Value; } get { return state.Value; } set { state.Value = State; } } set { state.Value = State; } } public String Country { public String Country { get { return country.Value; } get { return country.Value; } set { country.Value = Country; } } set { country.Value = Country; } } 14"> VaryByParam="*"%> public String" title="Fragment Caching a User Control [*.ascx]
  • Fragment Caching a User Control [*.ascx]
  • VaryByControl VaryByControl The sixth attribute supported by OutputCache Only supported in user control caching Caching is based on user control properties 15
  • Slide 16
  • 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. 16
  • Slide 17
  • 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 17
  • Slide 18
  • 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 18
  • Slide 19
  • 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 19
  • Slide 20
  • 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 20
  • Slide 21
  • 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 21
  • Slide 22
  • 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 22
  • Slide 23
  • 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) 23
  • Slide 24
  • Data Caching What is data caching? Working with the cache object Cache dependencies Scavenging memory Using callbacks with caching 24
  • Slide 25
  • 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 25 Cache [counter] = mycount.text Application[counter] = mycount.text
  • Slide 26
  • 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 26 Public DataSet GetProductData() { if (Cache["ProductData] = null) { Cache["ProductData] = LoadDataSet(); } Return Cache["ProductData]; }
  • Slide 27
  • 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 27
  • Slide 28
  • Scavenging(searching) Memory Automatic system that initiates when memory becomes scarce(limited) Tag cached items with relative importance CacheItemPriority CacheItemPriorityDecay Items must be added to cache using.Add or.Insert to make use of these enumerations 28
  • Slide 29
  • 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 29
  • Slide 30
  • When to Cache on server Frequently hit pages Content changes infrequently NYTimes.com ESPN.com Microsoft.com Data is expensive to retrieve MIS