Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "Overview  Introduction to ASP.NET caching  Output caching  Fragment caching  Data caching 1."— Presentation transcript:

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

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

3 Where to Cache  Client-side Browsers ○ Images ○ Pages Reduces download times  Server-side Reduces server processing load

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

5 Output Caching  What is output caching?  @ OutputCache directive and the cache object  Output caching attributes: Duration Location VaryByParam VaryByHeader VaryByCustom 5

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

7 @ OutputCache Directive and the Cache Object  @ OutputCache declaratively controls caching behavior For.aspx,.asmx, or.ascx  The cache object programmatically controls caching behavior 7 <%@ 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(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 Duration="600" Location="Any“ VaryByParam=“none” %>

9 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 <%@ OutputCache Duration="10“ VaryByParam="location;count" %> <%@ OutputCache Duration="60“ VaryByHeader="Accept-Language" %>

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

11 Fragment Caching  What is fragment caching?  VaryByControl  Nested cached user controls  Cached controls are not programmable 11

12  <%@ OutputCache Duration="#ofseconds" Location="Any | Client | Downstream | Server | None | ServerAndClient "  Shared="True | False" VaryByControl="controlname" VaryByCustom="browser | customstring" VaryByHeader="headers" VaryByParam="parametername" VaryByContentEncoding="encodings" CacheProfile="cache profile name | ''" NoStore="true | false" SqlDependency="database/table name pair | CommandNotification" %> 12

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

14 Fragment Caching a User Control [*.ascx] <%@ OutputCache Duration="10“ VaryByControl="State;Country" VaryByParam="*"%> 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; } }</script> 14

15 VaryByControl  VaryByControl The sixth attribute supported by OutputCache Only supported in user control caching Caching is based on user control properties 15 <%@ OutputCache Duration="10“ VaryByControl="State;Country“ VaryByParam="*"%>

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

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

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

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

20 Page/Fragment output cache : Best practices Don’ts  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.  Don’t use output cache for static page.  Don’t use output cache for page that contains lighter content  Don’t use output cache for page that generally executes faster 20

21 Page/Fragment output cache : Best practices Do’s  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

22 Page/Fragment output cache : Best practices Do’s  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

23 Page/Fragment output cache : Best practices Do’s  Use moderate duration for pages that are less frequently accessed and/or that doesn’t 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

24 Data Caching  What is data caching?  Working with the cache object  Cache dependencies  Scavenging memory  Using callbacks with caching 24

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

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“]; }

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

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

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

30 When to Cache on server  Frequently hit pages Content changes infrequently ○ NYTimes.com ○ ESPN.com ○ Microsoft.com  Data is expensive to retrieve MIS 324 ○ Weather forecast ○ Amazon Best Sellers

31 When NOT to cache  Pages that change frequently Shopping cart Amazon.com ○ Customized for each user  Personal data  Infrequently accessed data Cache must be stored  Overhead cost depends upon caching method


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

Similar presentations


Ads by Google