常见的分类信息首页,需读取至少六次数据库;其他子页面,五至十几次次不等。
在使用数据库连接池的情况下,Tomcat可以支撑的并发量也十分有限。系统资源主要消耗在两方面:
1、数据库操作,频繁的从数据库返回结果;
2、Tomcat解析JAVA文件。
将动态页面按一定规则创建一匹.html纯静态页面的过程,称之为生成静态页面。
优点
无须访问数据库,节省了最大的系统消耗。
Tomcat直接返回.html静态文件,无须解析JAVA文件,最大限度的提高效率。
安全,避免了非法传递参数所导致的错误。
缺点
生成的大量.html静态页面需要占用较多的硬盘空间。
失去了动态页面所具有交互性能。
运行稳定的动态页面是生成.html静态页面的前提。
起初,.html静态页面是通过系统频繁的访问(抓取)动态页面,得到运行结果,再而保存为.html档而来的.因此,抓取这一部分操作将是生成静态页面的核心;而如何尽可能减少抓取后的解析操作,取决于动态页面(例:Jsp页面);以何种规则保存这些.html静态页面、如何利用静态页面与用户交互等等也是避不可少的.归纳以下几点:
1、定义规则
绝大部分Jsp页面作用将不再是面对用户,而是供系统调用,得到运行结果,从而保存为.html档.因此,Jsp应该根据核心代码的规则,替换所有.jsp标签及连接.由.html代替。
2、路径
若.html静态页面太多,将不可避免的存放在不同的文件夹下。
在所有Jsp页面里指定以根目录开头的绝对路径,是解决办法之一。
3、交互性能
静态页面不可避免的失去了交互性能,例如:无法统计信息的阅读次数,无法得到Session信息等等.但也并非没有解决的办法,思路是将整张静态页面分割成若干张小页面,小页面依旧可以是.html静态页面,也可以是.Jsp动态页面.例如,可以嵌套某一零高度零宽度的.Jsp文件专门用作统计信息的阅读次数。
4、优化
若信息量比较大,.html静态页面占用硬盘容量也会随之增大.将静态页面共有的部分组织成一张新的.html页面,再令所有静态页面嵌套这样一个文件有助于降低页面体积.(注意该体积只能降低页面的文件大小,无助于提高访问效率)
5、风险
风险主要集中在生成静态页面的这个过程.网络异常可能导致返回的Jsp页面运行结果为空白、频繁读取可能导致Jsp页面未显示完整就保存为.html档等等,都是要考虑的问题。
为了节省系统消耗,我们经常将即将生成的页面转化为一个静态的页面,然后存放在硬盘中,以减少系统消耗。
下面举个例子:
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class CreateHtml {
public static void makeHtml(){
try {
URL url = new URL("http://www.baidu.com/");
//本实事例通过读取百度页面来生成静态页面,你要是想把自己程序里面要生成的jsp页面转化成静态页面,则可以在url构造器的参数中的参数写上:如http://localhost:8081/NEW/new.do?cmd=list&sortId=2
URLConnection conn = url.openConnection();//获得连接
BufferedReader br = new BufferedReader(new InputStreamReader (conn.getInputStream()));
BufferedWriter bw = new BufferedWriter(new FileWriter("D:/baidu.html"));
String str = null;
while((str = br.readLine())!=null){
bw.write(str);
}
bw.close();
br.close();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
makeHtml();
}
}
这样既可以在指定的D盘生成一个静态页面,可以分门别类的存放这些静态页面,有利于降低系统消耗。