我们要做到网页静态化,那么需要有一套方案来操作。
首先是静态网页的名称,要知道,每个商品的详情页面都是不一样的,因此我们最好把商品的ID加".html"作为静态网页的名称。
接着,静态网页的生成时机是什么?其中一种方案是当用户点击商品详情的时候生成静态页面,但是这种情况是有严重问题的,当并发量高时,第一个人点击商品详情,然后去生成静态页面,有可能静态页面在生成的过程中有另外一个人也要访问这个商品详情页面,这时程序判断有没有这个商品的静态页面,发现有了,就去展示,但其实这时静态页面还没有生成完呢,这样就会造成页面不全的问题。另一种方案是当添加商品的时候就生成静态页面,这样有足够的时间来生成这个静态页面,后续有人访问该商品详情的时候,就可以直接查看静态页面了。
接着,静态网页生成的目录应该放到哪儿?其中一种方案是将生成的静态页面放到webapp目录下,这种方案不太好,原因是tomcat处理静态页面不是它的强项,处理jsp才是它的强项。另外一种方案是使用http服务器,http服务器又可以分为多种,其中一种Http服务器便是Apache服务器,另外一种http服务器可以使用nginx。
经过上面的方案分析,我们可以使用如下图所示的流程,商品服务(taotao-manager)添加商品的时候发布topic消息到消息队列,server1和server2是两套http服务器,这样做的好处是提高系统的可用性,server1或server2从消息队列中去获取消息,知道添加了商品,于是生成这个商品的静态页面并且放到http服务器上,当用户访问的时候通过nginx反向代理服务器(后面会学习nginx)访问其中一台http服务器,从中获取静态页面进行展示。