Nginx/Apache框架下的动态网站纯静态化思路

相信很多站长都在考虑将自己的网站静态化,一方面HTML访问速度较快,另一方面对搜索引擎也友好。

在这里先不谈rulrewrite, 因为我们要做的是将网站动态页面真实静态化。

流程图如下:

网页静态化的处理流程

一般来说,服务器端的cron请求不宜过频,控制在10分钟左右,保证没有用户访问的前提下网站能实现自动更新。而客户端的JS脚本则可以设置20秒左右请求更新一次,但是这样就会出现一个问题,那就是当同时登陆网站的客户端较多时会给网站造成不小的压力。这时候就需要在PHP2HTML脚本上动动脑筋,判断前一次生成HTML离现在的时间间隔,我一般是30秒重新生成一次,也就是说如果上一次生成时间离现在不到30秒,那么无论是客户端还是服务器端请求PHP2HTML都会自动停止。这样一方面减少了服务器的压力,另一方面能保证网站数据的定时有序的更新。

然而实际上,网站静态化的时间间隔会低于30秒,为什么会这样呢?答案是PHP2HTML运行本身需要时间,在它自身运行时又有新的请求产生,因此会同时运行导致生成时间间隔略小于预设的时间。这个问题理论上有解决的方法,就是利用session。但是实际中利用session会让你遇到意想不到的麻烦的,比如PHP2HTML突然间死掉了,session还存在,那么整个网站的静态就需要等到session也死掉,这需要很长的时间。

上述思路我在2个服务器上实践过,结果是我自己很满意,因为从客户端的角度出发访问的速度很快。但是服务商不满意了,由此我的网站被反反复复关闭了好多次。以后的思路是动态数据动态化,静态数据静态化,这样可以大大节省服务器开支。

1 Comment

kcvgJuly 7th, 2009 at 10:09 pm

博主来看了你网站,发现你对NGINX说得好像这么回事,不知你是否有心来研究我日志中nginx的问题?

Leave a comment

You must be logged in to post a comment.