网站静态化是为了减轻应用服务器和数据库服务器的压力而使用的一种方法,
在使用它之前需要考虑网站使用静态化的可行性和必要性,是否通过其他方案可以达到同样的效果,如使用页面缓存等;
通常如新闻系统、博客等系统比较适合使用静态化,但交互性比较强、更新频繁如论坛、电子商务系统等则不便于实现静态化,或则说静态化时需要更多的考虑将页面分成很多小块,在显示的使用在组装起来。
设计的时候需要考虑很多细节,比如论坛帖子的更新频率,用户的等级、积分等信息,以及影响面有多大都是需要考虑的事情;
需要区分那些是动态化的信息,需要在信息的及时性和性能上做权衡,为了减轻负载需要尽量减少动态信息、数据库IO操作但必须要适度,如果运用不当反而会增加开发和维护难度;
另外还需要考虑生成静态文件的大小,如一个论坛有时候会出现很多楼的回复;
网站架构方面的设计:
用户请求通过nginx进行分发,应用服务器需要把静态文件独立出来做一个服务器组,需要的话还可以有独立的图片服务器,这是由于静态文件需要磁盘空间比较大,且小文件很多和动态内容混合在一起不便于优化;此外还有就是动态信息的应用服务器集群,这里可以用到memcache缓存服务器,同时前台请求到应用服务器之间还可以使用前端页面缓存,从性能上考虑memcache应部署在一台独立的服务器上。
然后就是生成静态文件并分发的中心,这里生成服务器只有一个输入和一个输出,那就是消息和静态文件。这里可以使用struts的动态actionform机制封装数据以及spring的bean map机制通过配置文件实现根据配置动态的找到相应的模板生成.shtml\html\htm等文件,当然也可以使用模板语言。这里分发需要用到分布式文件系统。在然后就是后台业务处理系统,以及数据库.
-->动态web组 -->memcache |
用户 -->nginx-->前端页面缓存
-->静态web组 <--文件分发中心(分布式文件系统) | 数据库
-->图片服务器 |
在使用它之前需要考虑网站使用静态化的可行性和必要性,是否通过其他方案可以达到同样的效果,如使用页面缓存等;
通常如新闻系统、博客等系统比较适合使用静态化,但交互性比较强、更新频繁如论坛、电子商务系统等则不便于实现静态化,或则说静态化时需要更多的考虑将页面分成很多小块,在显示的使用在组装起来。
设计的时候需要考虑很多细节,比如论坛帖子的更新频率,用户的等级、积分等信息,以及影响面有多大都是需要考虑的事情;
需要区分那些是动态化的信息,需要在信息的及时性和性能上做权衡,为了减轻负载需要尽量减少动态信息、数据库IO操作但必须要适度,如果运用不当反而会增加开发和维护难度;
另外还需要考虑生成静态文件的大小,如一个论坛有时候会出现很多楼的回复;
网站架构方面的设计:
用户请求通过nginx进行分发,应用服务器需要把静态文件独立出来做一个服务器组,需要的话还可以有独立的图片服务器,这是由于静态文件需要磁盘空间比较大,且小文件很多和动态内容混合在一起不便于优化;此外还有就是动态信息的应用服务器集群,这里可以用到memcache缓存服务器,同时前台请求到应用服务器之间还可以使用前端页面缓存,从性能上考虑memcache应部署在一台独立的服务器上。
然后就是生成静态文件并分发的中心,这里生成服务器只有一个输入和一个输出,那就是消息和静态文件。这里可以使用struts的动态actionform机制封装数据以及spring的bean map机制通过配置文件实现根据配置动态的找到相应的模板生成.shtml\html\htm等文件,当然也可以使用模板语言。这里分发需要用到分布式文件系统。在然后就是后台业务处理系统,以及数据库.
-->动态web组 -->memcache |
用户 -->nginx-->前端页面缓存
-->静态web组 <--文件分发中心(分布式文件系统) | 数据库
-->图片服务器 |