对于并发量很大的网站项目,最容易产生数据库瓶颈问题。因此我们要优化我们的网站,最常用的莫过于使用网页静态化和缓存技术,当然这里的静态化不包括伪静态。有人静态化生成.html文件,可是如何在html文件中包含其他文件呢?,有人想到iframe,没错,可以实现,但是效率不好。因此个人更建议使用SSI技术生成.shtml文件,纵观新浪,sohu等几大门户网站无不使用此技术。
SSI技术优点:SSI技术是通用技术,它不受限于运行环境,在java、dotnet、CGI、ASP、PHP下都可以使用SSI技术;解释SSI的效率比解释JSP的效率快很多,因为JSP规范提供了太多的功能,这些功能都需要servlet引擎一一进行解释,所以效率比较低。
生成.shtml文件,我选用velocity模板引擎,但是要注意在生成.shtml文件的时候,模板会将<!--#include file="" --> 中的include指令解析成自己的模板语言,此时我们需要将#转义成普通字符。
解释.shtml文件最佳服务器是APACHE HTTP SERVER。同时对于静态文件我们更需要专业的apache 帮我们解析。其性能远远高于tomcat等servlet容器。此刻我们又不得不使用负载均衡将apache和tomcat整合了。之前一直困扰于负载均衡之后的apache如何访问tomcat上的静态文件这个问题?百思不得其解,终于在一阵“摸爬滚打”中找到了答案,其实在apache的配置文件httpd.conf中可以配置:DocumentRoot "D:/apache-tomcat-6.0.18/webapps" 。如此我们怎么知道我们现在服务器上的应用已经动静态分离了呢?可以用这个方法简单测试下:分别访问一个应用中存在的文件和不存在的文件,查看浏览器报错信息。
对于缓存,个人更建议使用全局缓存策略(缓存静态页),比如oscache,jbosscache等,而不是使用hibernate的二级缓存。这里就不作详细介绍了.