Recipe 16.2. Caching Pages


Problem

You want to cache the pages in your application.

Solution

Add the @ OutputCache directive to the top of the .aspx file of each page you want to cache with the VaryByParam attribute set to "None":

 <%@ Page Language="VB" MasterPageFile="~/ASPNetCookbookVB.master"          AutoEventWireup="false"  CodeFile="CH16CachePageVB.aspx.vb"  Inherits="ASPNetCookbook.VBExamples.CH16CachePageVB"  Title="Caching ASPX Pages" %>     <%@ OutputCache Duration="5" VaryByParam="None" %>

Discussion

This recipe shows the minimum changes required to an .aspx file to cache a page of your ASP.NET application. Only one @ OutputCache directive can be included per page, and the Duration and VaryByParam attributes are required.

You specify how long the page is to be retained in the cache by setting the Duration attribute to the desired time in seconds. In our example directive, the page will be rendered on the first request for the page and placed in the cache. For five seconds, all subsequent requests for the page will be delivered from the cached copy. After five seconds, the page will again be rendered.

The duration can be set to any positive integer value (12,147,483,647), which allows caching a page for roughly 68 years. You may be tempted to use very large numbers; however, every cached page uses server resources, and, if the page is not needed frequently, you will tie up server resources unnecessarily.

The VaryByParam attribute is used to define parameters that determine which cached copy of a page should be sent to the client. If your page does not vary, set the VaryByParam attribute to "None" and a single copy of the page will be saved in the cache. For an example of caching multiple copies of a rendered page as a function of the values in the query string, see Recipe 16.2.

Not all pages should be cached. Caching pages used for data input or login functions can result in some odd behavior. Table 16-1 provides some guidelines for deciding when to cache a page.

Table 16-1. Suggestions for caching pages

Page type

Should it be cached?

Comment

Completely static

Yes

A single copy of the rendered page will be saved in the cache.

Contents change as a function of query string values

Possibly

Multiple copies of the rendered page will need to be saved in the cache (see Recipe 16.2).

Static, but rendered page varies by client browser

Yes

One copy of the rendered page will be saved in the cache for each major version of a browser (see Recipe 16.3).

Input form

No

Caching an input form page can result in the data entered by one user being displayed to another.

Dynamically created from database

Possibly

ASP.NET 2.0 provides the ability to have the cached data expire as a function of changes to the contents of the database (see Recipe 16.5).


See Also

Recipes 16.2, 16.3, and 16.5



ASP. NET Cookbook
ASP.Net 2.0 Cookbook (Cookbooks (OReilly))
ISBN: 0596100647
EAN: 2147483647
Year: 2003
Pages: 202

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net