网站的静态页面生成方案 .
??提升网站性能的方式有很多,例如有效的使用缓存,生成静态页面等等。今天要说的就是生成静态页面的方式。这个也是我近期一直在搞的一个问题,近期在做使用html + servlet做个人网站,为什么是这2个东西呢?
1、直接用servlet是为了保证网站能以最快的速度执行命令..个人总感觉像Struts hibernate spring之类的虽然方便但是效能带来的损耗不太能接收
2、使用html同样是为了保证最快的反应速度,毕竟html 比jsp少了一层服务器执行.速度上要快的多
其中,对于 URL Rewriter的部分,可以使用收费或者开源的工具来实现,如果 url不是特别的复杂,可以考虑在 servlet 中实现,那么就是下面这个样子:?
?
?
上面就是整个代码了,非常的简单吧
我们这章要讨论一下如何让用户遵守访问方式和如何更新生成的html文件
四、如何让用户遵守访问方式
??前面我们已经通过代码讲解,用户访问 xx_pageNumber_1.shtm,那么我们可以直接返回已经存在的html文件给用户,大大的减轻应用服务器的压力。可是如果客户直接访问 xx.do?pageNumber=1 呢?浏览器是客户的,如果他们要想恶意的请求你的网站你是没有办法控制的,难道我们要在页面上告诉访问者“请遵守访问方式,否则您将被如何如何”吗?
??针对上面这种情况,我们需要在 index.do 中做点手脚。简单的说就是在我们自己转发请求的时候设置一个变量告诉被请求的地址我们是合法的,例如:xx.do?pageNumber=1后面追加一个 &my=true,这样的话就可以在被请求的action中检测是否有my这个变量,如果有说明合法,该怎么操作都行,如果没有就是违法的,直接跳转到错误页面。这样就能用最简单的方式控制用户的非法请求了.
接着我们讲解一下如何刷新这些html
??因为是一次性的生成Html,如果对应的数据发生变化,比如update或者delete情况,我们就应该更新相应的html文件,那如何对html文件进行更新呢?
大体上有几个方式
1、最笨的方式,手动刷新.
例如:网站首页,当管理员更新一个功能之后,手动点击后台的一个按钮直接更新对应的html文件
2、定时刷新。
每隔一段指定的时间去更新所有已经存在的html文件,当然前提是你要先验证哪些已经生成了html文件.至于怎么验证?你可以在每生成一个文件的时候往内存的某个list或者某个文件,或者某个表写入当前生成的文件名..
3、智能刷新
先说一下,这个不好做,但是做好了很牛方便。
管理员在后台的每个操作 增删改查,都进行监听,并在操作完成后去验证一下对应的文件是否存在,存在就更新,不存在就不操作. (要想实现这种方式,在进行框架设计的时候就要把这一模块考虑好,让后台的每一步操作都实现一个已经公共的被观察的对象.--可以查考一下观察者模式)