正 文

JSP 2.0下的动态内容缓存分析讲解


www.7dspace.com  更新日期:2006-1-15 1:43:47  七度空间


  理解<jc:dynamic>在做什么

  每一个<jc:dynamic>被一个DynamicTag类的实例处理,setExpr()方法将expr属性值存储到一个私有域。DoTag()方法创建JSP表达式,在expr属性值加上${前缀和}后缀。然后,doTag()使用findAncestorWithClass()来查找含有<jc:dynamic>标签元素的<jc:cache>的CacheTag handler。如果没有查找到或者缓存被禁用,JSP表达式被JspUtils.eval()赋值并且值被输出。否则,doTag()输出无值表达式。

  package com.devsphere.articles.jspcache;
  import javax.servlet.jsp.JspException;
  import javax.servlet.jsp.tagext.SimpleTagSupport;
  import java.io.IOException;
  public class DynamicTag extends SimpleTagSupport {
  private String expr;
  public void setExpr(String expr) {
  this.expr = expr;
  }  public void doTag() throws JspException, IOException {
  String output = "${" + expr + "}";
  CacheTag ancestor = (CacheTag) findAncestorWithClass(
  this, CacheTag.class);
  if (ancestor == null || !ancestor.isCacheEnabled())
  output = (String) JspUtils.eval(
  output, String.class, getJspContext());
  getJspContext().getOut().print(output);
  }}

  分析以上代码,可以注意到<jc:cache>和<jc:dynamic>合作来实现一个尽可能有效率的方案。如果缓存可用,页面片段和由<jc: dynamic>生成并被CacheTag赋值的JSP表达式一起放入缓冲器。如果缓存被禁用,缓冲变得没有意义,<jc:cache>只是执行其JSP body部分,而让DynamicTag给JSP表达式赋值。禁用缓存有时候是必要的,特别是在开发过程期间出现内容的改变和JSP页面被重新编译的时候。当然,在开发完毕的成品环境中缓存必须被启用。
  
  总结

  内容缓存是一种非常易用的改善 Web应用性能的方法。这篇文章集中讨论了使用JSP表达式语言来为每一个用户或者请求定制缓存内容。贯穿全文的简单介绍的标签库适合小型Web apps并且可以提升中等应用的性能。对于开发大型企业级应用,则该考虑使用支持更好的缓存机制的框架结构,而不仅是使用JSP变量。但是了解基于EL API的定制技术无疑是不无裨益的。

3页,页码:[1] [2] [3] 

上一篇:探索JSF框架中使用的设计模式
下一篇:ASP.NET 2.0运行时简要分析
标题:JSP 2.0下的动态内容缓存分析讲解 作者: 来源:matrix
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐