4 商品详情页
4.1 分析
秒杀活动中,热卖商品的详情页访问频率非常高,详情页的数据加载,我们可以采用直接从数据库查询加载,但这种方式会给数据库带来极大的压力,甚至崩溃,这种方式我们并不推荐。
商品详情页主要有商品介绍、商品标题、商品图片、商品价格、商品数量等,大部分数据几乎不变,可能只有数量会变,因此我们可以考虑把商品详情页做成静态页,每次访问只需要加载库存数量,这样就可以大大降低数据库的压力。
我们这里将采用freemarker来实现商品详情页的静态化,关于freemarker的语法我们就不在这里讲解了,大家可以自行去网上查阅相关API。
4.2 工程搭建
我们创建一个静态页生成工程,用于生成商品详情页。
pom.xml
bootstrap.yml
创建文件生成对象:
BaseProcess
介绍:
该类用于生成静态文件,调用writerPage
方法即可实现,其中有3个变量,变量注释如下:
templateName:模板名字,例如item.ftl,模板放到templates目录下
path:生成文件的路径,例如D:/page/html
name:生成静态页文件的名字,例如:1.html
4.3 商品详情静态页生成
生成商品详情页,我们需要提供商品信息(sku),并且将商品数据存储到数据模型Map中,然后在页面渲染。
1)静态页生成
在seckill-page
中创建com.seckill.page.service.SkuPageService
,添加生成静态页方法,代码如下:
在seckill-page
中创建com.seckill.page.service.impl.SkuPageServiceImpl
,添加生成静态页方法,代码如下:
在seckill-page
中创建com.seckill.page.controller.SkuPageController
,添加生成静态页方法,代码如下:
注意:其中bootstrap.yml中添加htmlPath: D:/page/html
配置。
关于Freemarker学习:FreeMarker的jar包下载引入
现在已进入面向接口编程的前后端分离时代,大概看下即可
2)Feign调用
在seckill-page-api
中创建com.seckill.page.feign.SkuPageFeign
实现调用,代码如下:
4.4 静态页删除
当商品变成普通商品或者商品售罄的时候,需要删除详情页,因此还需要实现一个根据id删除详情页的方法。
在seckill-page
中创建com.seckill.page.service.SkuPageService
,添加删除静态页方法,代码如下:
在seckill-page
中创建com.seckill.page.service.impl.SkuPageServiceImpl
,添加删除静态页方法,代码如下:
在seckill-page
中创建com.seckill.page.controller.SkuPageController
,添加删除静态页方法,代码如下:
2)Feign调用
在seckill-page-api
中创建com.seckill.page.feign.SkuPageFeign
实现调用,代码如下: