dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>java>jsp>文章内容
JSP显示内容缓存技巧
来源:未知     作者:    

  前段时间做自己社区的论坛,在jive的基础上做一个页面显示所有的帖子,可以称之为总版,模仿Forum类的做个SuperForum并且实现Cachable,不过因为这个页面刷新量比较大,虽然被Cache了,我还是想办法进行页面的缓存,感觉用产生的html静态内容当缓存,页面访问速度应该有所提高。

  首先想到的一种办法,是采用.net的URLConnection把服务器上的jsp抓过来做缓存,不过我觉得这样做太见外了,自己服务器上的东西,为何要用HTTP去访问.于是想另外一个办法,把jsp的out对象的输出控制到自己希望的地方.比如输出到静态文件,又或者保存成全局的字符串变量.这样的话,浏览就不需要执行jsp,只是浏览该html了.仅仅在数据有更新的时候进行一次update操作,把重新输出为html.

  我觉得,浏览比数据插入或更新发生的次数多的时候.不妨试试这个办法来提高页面访问速度.

  整件事情有点像把当作模板,生成静态的html页面.

  将如下代码写入web-

<filter>
<filter-name>FileCaptureFilter</filter-name>
<filter-class>com.junjing.filter.FileCaptureFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>FileCaptureFilter</filter-name>
<url-pattern>/latest.</url-pattern>
</filter-mapping>

  latest.是我要cache的页面

  源码代码如下

/** * START File FileCaptureFilter. */

package com.junjing.filter;
import x..*;
import x..http.*;
import .io.*;
public class FileCaptureFilter implements Filter
{
 private String protDirPath;
 public void init(FilterConfig filterConfig)
  throws Exception
  {
   protDirPath = filterConfig.getContext().getRealPath("/");
  }
 public void doFilter(ServletRequest request,Response response,FilterChain chain)
  throws IOException, Exception
  {
  String fileName = protDirPath + "forum/lastest.html";
  PrintWriter out = response.getWriter();
  FileCaptureResponseWrapper responseWrapper = new FileCaptureResponseWrapper((HttpResponse)response);
  chain.doFilter(request, responseWrapper);
  // fill responseWrapper up
  String html = responseWrapper.toString();
  //得到的html页面结果字符串
  // responseWrapper.writeFile(fileName);
  // dump the contents 写成html文件,也可以保存在内存
  //responseWrapper.writeResponse( out );
  // back to browser
  //responseWrapper.sendRedirect("lastestThread.");
  }

  public void destroy() {}
}

/** * END File FileCaptureFilter. */
/** * START File FileCaptureResponseWrapper. */

package com.junjing.filter;
import x..*;
import x..http.*;
import .io.*;

public class FileCaptureResponseWrapper
 extends HttpResponseWrapper
 {
  private CharArrayWriter output;
  public String toString()
  {
   return output.toString();
  }
  public FileCaptureResponseWrapper(HttpResponse response)
  {
   super(response);
   output = new CharArrayWriter();
  }

  public PrintWriter getWriter()
  {
   return new PrintWriter(output);
  }

  public void writeFile(String fileName)
   throws IOException
   {
    FileWriter fw = new FileWriter(fileName);
    fw.write( output.toCharArray() );
    fw.close();
   }

  public void writeResponse(PrintWriter out)
  {
   out.print( output.toCharArray() );
  }
 }
 /** * END File FileCaptureResponseWrapper. */

 

[1]  

 

 

上一篇:Windows下JSP开发环境的配置   下一篇:Servlet/JSP配置详解
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·JSP入门实例教程
·什么是Servlet
·JSP常用内置对象使用说明
·JSP自定义标签由浅到深详细讲解
·JSP自定义标签由浅到深详细讲解
·Java Servlet技术
·Javax.servlet API的特征
·一个简单的jsp注册页面
·JSTL操作数据库示例
·JSP入门实例教程13-MVC模式
·JSP入门实例教程12-jstl处理数
·JSP入门实例教程11-jstl处理xml
  相关文章
·Windows下JSP开发环境的配置
·Servlet/JSP配置详解
·JSP动态输出Excel及中文乱码的解
·JSP的九种基本内置组件简介
·JavaBean实现多文件上传的两种方
·在JSP中使用JavaMail
·用JSP构建三层管理信息系统
·利用iText在JSP中生成PDF报表
·JSP+JDBC(Thin模式)连接Oracle
·一个用JSP实现的分页的类及调用
·JSP/Servlet应用程序优化八法
·JSP实现论坛树型结构的具体算法
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763