Sun Java System Web Server 6.1 SP6 Programmer's Guide to Web Applications

JSP Cache Tags

JSP cache tags allow you to cache JSP page fragments within the Java engine. Each can be cached using different cache criteria. For example, suppose you have page fragments to view stock quotes, weather information, and so on. The stock quote fragment can be cached for 10 minutes, the weather report fragment for 30 minutes, and so on.

For more information about response caching as it pertains to servlets, see Caching Servlet Results

JSP caching uses the custom tag library support provided by JSP 1.2. JSP caching is implemented by a tag library packaged into the install_dir/bin/https/jar/webserv-rt.jar file, which is always on the server classpath. The sun-web-cache.tld tag description file can be found in install_dir/bin/https/tlds directory and can be copied into the WEB-INF directory of your web application.

You can add a taglib mapping in the web.xml of your application as follows:

<taglib>
  <taglib-uri>/com/sun/web/taglibs/cache</taglib-uri>
  <taglib-location>/WEB-INF/sun-web-cache.tld</taglib-location>
</taglib>

You can then refer to these tags in your JSP files as follows:

<%@ taglib prefix="mypfx" uri="/com/sun/web/taglibs/cache" %>

Subsequently, the cache tags are available as <mypfx:cache> and <mypfx:flush>.

The tags are as follows:

cache

The cache tag allows you to cache fragments of your JSP pages. It caches the body between the beginning and ending tags according to the attributes specified. The first time the tag is encountered, the body content is executed and cached. Each subsequent time it is run, the cached content is checked to see if it needs to be refreshed and if so, it is executed again, and the cached data is refreshed. Otherwise, the cached data is served.

Attributes

The following table describes attributes for the cache tag. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.

Table 3–4 cache Attributes

Attribute  

Default  

Description  

key

ServletPath_Suffix

(optional) The name used by the container to access the cached entry. The cache key is suffixed to the servlet path to generate a key to access the cached entry. If no key is specified, a number is generated according to the position of the tag in the page. 

timeout

60s

(optional) The time in seconds after which the body of the tag is executed and the cache is refreshed. By default, this value is interpreted in seconds. To specify a different unit of time, add a suffix to the timeout value as follows: s for seconds, m for minutes, h for hours, d for days. For example, 2h specifies two hours.

nocache

false

(optional) If set to true, the body content is executed and served as if there were no cache tag. This offers a way to programmatically decide whether the cached response should be sent or whether the body must be executed, though the response is not cached.

refresh

false

(optional) If set to true, the body content is executed and the response is cached again. This lets you programmatically refresh the cache immediately, regardless of the timeout setting.

Example

The following example represents a cached JSP page:

<%@ taglib prefix="mypfx" uri="/com/sun/web/taglibs/cache" %>

<%
   String cacheKey = null;
    if (session != null)
      cacheKey = (String)session.getAttribute("loginId");

   // check for nocache
   boolean noCache = false;
   String nc = request.getParameter("nocache");
   if (nc != null)
      noCache = "true";

   // force reload
   boolean reload=false;
   String refresh = request.getParameter("refresh");
   if (refresh != null)
      reload = true;
 %>

 <mypfx:cache key="<%= cacheKey %>" nocache="<%= noCache %>" refresh="
<%= reload %>" timeout="10m">
<%
    String page = request.getParameter("page");
   if (page.equals("frontPage") {
       // get headlines from database
    } else {
       .....
 %>
</mypfx:cache>

<mypfx:cache timeout="1h">
<h2> Local News </h2>
<%
   // get the headline news and cache them
%>
</mypfx:cache>

flush

Forces the cache to be flushed. If a key is specified, only the entry with that key is flushed. If no key is specified, the entire cache is flushed.

Attributes

The following table describes attributes for the flush tag. The left column lists the attribute name, the middle column indicates the default value, and the right column describes what the attribute does.

Table 3–5 flush Attributes

Attribute  

Default  

Description  

key

ServletPath_Suffix

(optional) The name used by the container to access the cached entry. The cache key is suffixed to the servlet path to generate a key to access the cached entry. If no key is specified, a number is generated according to the position of the tag in the page. 

Examples

To flush the entry with key="foobar":


<mypfx:flush key="foobar">

         

To flush the entire cache:


<% if (session != null && session.getAttribute("clearCache") != null) { %>
     <mypfx:flush >
 <% } %>