您的位置:首页 > 其它

淘淘商城系列——商品详情页面静态化方案分析

2017-06-11 21:36 295 查看
我们要做到网页静态化,那么就需要有一套方案来操作。

首先我们来考虑一下输出文件的名称(即静态网页的名称),要知道每个商品的详情页面都是不一样的,因此我们最好把商品的ID加”.html”作为静态网页的名称。

接着来考虑一下输出文件的路径,即生成的静态网页应该放到哪儿。输出文件的路径可以是工程外部的任意目录,例如,这里我将生成的静态网页放在如下图所示的目录中。



然后我们再来思考一下如何访问生成的静态网页这个问题。在我们的这套解决方案中,taotao-item-web这个工程的作用就是生成静态页面,访问我们也用不着它,它生成完静态页面,它的活就没有了。我们还有必要通过tomcat来访问静态资源吗?既然已经静态化了,那么我们就有很多种解决方案来访问静态资源,而且效率比tomcat要高的多,还有必要来使用tomcat吗?显然没有必要,当然了,就使用tomcat访问也是可以的,但tomcat访问静态资源的效率不高。我们可以使用使用http服务器,http服务器又可以分为多种,其中一种http服务器是Apache服务器,另外一种http服务器是Nginx服务器。使用Apache服务器,它的效率还是很高的,这里我们使用Nginx服务器,它访问静态资源的性能要比tomcat高的多,如果tomcat的并发量能达到500的话,Nginx的并发量是可以达到50000的。

接下来我们就来考虑taotao-item-web这个工程的部署问题了,假如说一台服务器下的静态资源并发量超过50000了,这时候一台服务器也就不行了,此时我们可以把taotao-item-web这个工程部署到多台服务器上,在每台服务器上都生成静态页面,就可以了。

最后来思考静态网页的生成时机是什么?其中一种方案是当用户点击商品详情的时候生成静态页面,但是这种情况是有严重问题的,当并发量高时,第一个人点击商品详情,然后去生成静态页面,有可能静态页面在生成的过程中有另外一个人也要访问这个商品详情页面,这时程序判断有没有这个商品的静态页面,发现有了,就去展示,但其实这时静态页面还没有生成完呢,这样就会造成页面不全的问题。另一种方案是当添加商品的时候就生成静态页面,这样有足够的时间来生成这个静态页面,后续有人访问该商品详情的时候,就可以直接查看静态页面了。

经过上面的方案分析,我们可以使用如下图所示的流程,商品服务(taotao-manager)添加商品的时候发布topic消息到消息队列,Server1和Server2是两套http服务器,这样做的好处是提高系统的高可用性,Server1或Server2从消息队列中去获取消息,知道添加了商品,于是生成这个商品的静态页面并且放到http服务器上,当用户访问的时候通过Nginx反向代理服务器(后面会学习Nginx)访问其中一台http服务器,从中获取静态页面进行展示。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: