2008-06-25
java servletfilter实现全站动转静
原理及特点
特点:大小仅9k,没有用额外包,jdk1.4环境开发通用性强,配置简单
原理:利用filter拦截请求的jsp,如已生成静态页面且没到刷新时间则重定向静态页面,否则生成静态页面。
* 生成策略:当前时间与上次修改时间的差值大于间隔时间则重新生成
* 定向策略:如果是拦截的页面并以生成静态页面则重定向的静态页面
* 静态页面文件名生成策略:源文件名+参数的md5码
配置方法
1.引入所需包(见附件dynamictostatic_0.8.jar)
2.web.xml里配置filter,如下
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <filter> <filter-name>Dynamic2StaticFilter</filter-name> <filter-class>com.hrtc.d2s.Dynamic2StaticFilter</filter-class> <init-param> <description>刷新频率单位秒</description> <param-name>refresh_time</param-name> <param-value>600</param-value> </init-param> <init-param> <description>生成静态页面线程池大小</description> <param-name>threadsize</param-name> <param-value>10</param-value> </init-param> <init-param> <description>输出流缓存大小单位字节</description> <param-name>buffersize</param-name> <param-value>8192</param-value> </init-param> <init-param> <description>生成的页面存放于相对于应用根路径</description> <param-name>static_folder</param-name> <param-value>/html</param-value> </init-param> <init-param> <description>静态文件扩展名</description> <param-name>static_extend_name</param-name> <param-value>.html</param-value> </init-param> <init-param> <description>临时文件扩展名</description> <param-name>temp_extend_name</param-name> <param-value>.temp</param-value> </init-param> <init-param> <description>http head参数名</description> <param-name>request_head_name</param-name> <param-value>requesttype</param-value> </init-param> <init-param> <description>http head参数值</description> <param-name>request_head_value</param-name> <param-value>download</param-value> </init-param> </filter> <filter-mapping> <filter-name>Dynamic2StaticFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
配置完毕,随便访问你网站的页面看效果吧。
这是今天自己想到的方法,与大家互相学习一下,希望大家能提出改进意见。
源码见附件,在windows平台上开发
评论
hrtc
2008-06-30
另外生成是用另一线程做的,所以不会影响当前请求。
hrtc
2008-06-30
看你的页面访问率决定如何设置了,比如说生成时间设成1分钟,那么1分钟里只会生成1次,1分钟访问10次的话可以节省9次的时间多一次生成时间,另外采用被动生成策略(访问时才生成),所以把生成过程平均化了,个人认为比一下子全部网页转成静态效率高,而且生成频率相对也能调得更低些,因为全部生成的话要花很多时间。效率的话你自己试下就知道了。
goaling
2008-06-29
都在过滤器里 效率高吗
发表评论
- 浏览: 4211 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最新评论
-
websphere5.1+spring2.0+s ...
如果确定文件在的话,按上述步骤试下,6.1没用过,看是否是相同的原因,希望你成功 ...
-- by hrtc -
websphere5.1+spring2.0+s ...
我项目在工作的时候由于方便,所以就在tomcat5.5下运行 上线的时候客户要求 ...
-- by yuyang030405 -
websphere5.1+spring2.0+s ...
Good practical article! Thanks for shar ...
-- by xzcgeorge -
java servletfilter实现全 ...
另外生成是用另一线程做的,所以不会影响当前请求。
-- by hrtc -
java servletfilter实现全 ...
看你的页面访问率决定如何设置了,比如说生成时间设成1分钟,那么1分钟里只会生成1 ...
-- by hrtc






评论排行榜