缓存JSP显示的html

原创 2003年12月02日 21:58:00

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

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

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

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

将如下代码写入web-xml
  <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.jsp</url-pattern>
  </filter-mapping>
latest.jsp是我要cache的页面
java源码代码如下






package com.junjing.filter;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;

public class FileCaptureResponseWrapper extends HttpServletResponseWrapper
{
private CharArrayWriter output;
public String toString() { return output.toString(); }
public FileCaptureResponseWrapper(HttpServletResponse 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() );
}
}

附件
源代码
不过采用resin服务器的话,以上代码会失效。
因为resin没有实现getWriter方法,而是采用getOutputStream取而代之,
所以必须修改些代码来迎合resin运行环境:







package com.junjing.filter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class FileCaptureResponseWrapper extends HttpServletResponseWrapper{   
private CharArrayWriter output;   
public String toString() {
  return output.toString();
}   
public FileCaptureResponseWrapper(HttpServletResponse 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.toString()); 
  fw.close();   
}  
public ServletOutputStream getOutputStream() throws java.io.IOException {
  return new ServletOutputStream() {
    public void write(int b) throws IOException {
    output.write(b);
  }
  public void write(byte b[]) throws IOException {
    output.write(new String(b,"GBK"));
  }
  public void write(byte b[], int off, int len) throws IOException {
    output.write(new String(b, off, len));
  }
 };
}
public void writeResponse(PrintWriter out) { 
  out.print(output.toCharArray());  
}
}

 

JSP缓存问题导致页面显示不全

..
  • u010688587
  • u010688587
  • 2015年08月21日 01:21
  • 2448

当点击前进后退按钮时让HTML和JSP页面不缓存从Web服务器上重新获取页面

当点击后退按钮时,默认情况下浏览器不是从Web服务器上重新获取页面,而是从浏览器缓存中载入页面,那么怎么才能让HTML和JSP页面不缓存呢?下面为大家介绍下比较详细的解决方法: 用户退出后,如果...
  • yangshijin1988
  • yangshijin1988
  • 2015年03月18日 18:50
  • 2506

关于jsp和html文件的缓存问题

今天在做一个小练习的时候,遇到一个让我很想不通的问题。今天在自己在写java web小练习时,在servlet中添加一个过滤器,让这个过滤器实现根据不同权限限制访问不同的页面功能。当我在web.xml...
  • hjh_walker
  • hjh_walker
  • 2016年11月09日 21:57
  • 1622

关于jsp和html文件的缓存问题

今天在做一个小练习的时候,遇到一个让我很想不通的问题。今天在自己在写java web小练习时,在servlet中添加一个过滤器,让这个过滤器实现根据不同权限限制访问不同的页面功能。当我在web.xml...
  • hjh_walker
  • hjh_walker
  • 2016年11月09日 21:57
  • 1622

当点击前进后退按钮时让HTML和JSP页面不缓存从Web服务器上重新获取页面

当点击后退按钮时,默认情况下浏览器不是从Web服务器上重新获取页面,而是从浏览器缓存中载入页面,那么怎么才能让HTML和JSP页面不缓存呢?下面为大家介绍下比较详细的解决方法: 用户退出后,如果...
  • yangshijin1988
  • yangshijin1988
  • 2015年03月18日 18:50
  • 2506

JSP/HTML页面 (公共JS、CSS、Image缓存)-----静态缓存

【1】服务端配置一个Filter,实现对js、css和image的缓存 package com.cache.model.filter; import java.io.IOException; imp...
  • zhouzhiwengang
  • zhouzhiwengang
  • 2016年11月25日 10:42
  • 1121

JSP缓存问题导致页面显示不全

..
  • u010688587
  • u010688587
  • 2015年08月21日 01:21
  • 2448

java springMVC jsp页面时间规范显示、页面无缓存、session读写以及后台增加跳转集锦

1、jsp页面时间规范显示 页面头部: 规范显示: 2、jsp页面无缓存 3、后台session读写 写 取 4、后台增加后的跳转(后台向前台输出...
  • u013152718
  • u013152718
  • 2015年09月09日 10:33
  • 1086

页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法

原文链接:http://blog.csdn.net/oklzh/article/details/4445722 有关页面缓存问题.这个问题上网找了好多.但发觉各种解决方法,都彼此分离...
  • Ericans
  • Ericans
  • 2012年10月20日 13:10
  • 342

页面缓存, jsp 缓存, html 缓存, ajax缓存,解决方法

有关页面缓存问题.这个问题上网找了好多.但发觉各种解决方法,都彼此分离,没有一篇统一的解决方法,本人近日,也遇到了页面缓存的问题,根据网上各页面缓存的解答,做了一个总结。   1.服务器端缓存的问...
  • xiyuan1999
  • xiyuan1999
  • 2011年08月18日 14:34
  • 1796
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:缓存JSP显示的html
举报原因:
原因补充:

(最多只允许输入30个字)