网站页面静态化方案

    前段时间,由于网站mysql数据库性能瓶颈原因,开始研究网站页面静态化。目前已上线并且运行良好,具体的过程和想法贴出来,和大家一起分享一下。

    网站: http://v.xxt.cn

    静态化的好处:

 

    1.响应速度快,避免中间转换步骤

    2.避免与数据库的交互,减轻服务器的压力

    3. SEO友好,更容易被爬虫抓取。(貌似此处现在没有这个优势了。看百度seo说明上面,动态页面也不存在啥问题。)

 

    适用的地方:

    更新不频繁、跟用户个人信息相关性低。

    新闻、博客、商品信息等。。。

   

    实现原理:

    1. 伪静态化

    看上去是静态化,其实还是动态的网页内容。对性能没有任何的提升。主流技术:urlrewrite

    2. 全静态化

    我们用浏览器访问页面的时候,其实展现给我们的就是html页面,经过服务器处理过的。本次的原理就是利用http请求,获取到服务器生成的html页面的源代码,存起来让用户访问。

 

    在java程序中利用java.net.Url来获取web内容,然后重写html文件。

 

java.net.Url;
java.net.HttpURLConnection;
java.net.HttpURLConnection;

java.io.File;

httpURLConnection是基于HTTP协议的,其底层通过socket通信实现。如果不设置超时(timeout),在网络异常的情况下,可能会导致程序僵死而不继续往下执行.

 

 

说明:

原理很简单,但是在实施的时候,有很多需要注意的地方。

比如

1. 动态的内容,比如首页如何处理用户的登陆?

2.个性化内容,不同的用户如何展现不同的信息?

3. 生成html页面的时候,生成到一半程序挂掉了,如何保证页面正常?

4. 页面有更新怎么办?更新机制有轮询生成和事件触发生成。

5. 以前的老地址怎么办?使用urlrewrite来重定向到新html页面

6. html文件存储怎么办?建立合理的文件存储目录规划

7. 生成的html页面需要进行处理,去除掉空行和空格,可以大大减小html的大小。可达几十K。

8. 在做一些地址转发时,可能会用到id取模计算等,这些urlrewrite是做不到的,可以利用nginx的计算模块lua来实现。

 

动态处理的内容是无法静态化的。所以需要增加 js+cookie 来控制动态的内容。

 

参考资料

 

1.http://tristan-wang.iteye.com/blog/554456

2.http://baike.baidu.com/view/2510440.htm

3.Urlrewrite

http://tuckey.org/urlrewrite/

http://www.jtict.com/blog/seam-form-url-rewriting/

http://www.megadix.it/content/urlrewritefilter-un-modrewrite-le-servlet

http://tuckey.org/urlrewrite/manual/3.0/guide.html

http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#filterparams

http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html#condition

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值