java秒杀系列(2)- 页面静态化技术
###前言 通过代码片段分别介绍服务端渲染、客户端渲染、对象缓存三种方式的写法。 代码片段仅供参考,具体实现需要根据业务场景自行适配,但思想都是一样。
一、服务端渲染方式
####1、接口返回html页面的设置 ```java @Autowired ThymeleafViewResolver thymeleafViewResolver; @Autowired ApplicationContext applicationContext;
@RequestMapping(value="/to_list", produces="text/html")
@ResponseBody
public String goodsList() {
// 业务逻辑
}
####2、先从缓存中取,有就返回。
```java
//取缓存
String html = redisService.get(GoodsKey.getGoodsList, "", String.class);
if(!StringUtils.isEmpty(html)) {
return html;
}
3、缓存中没有,就手动渲染。
springboot1.5.x的写法:
List goodsList = goodsService.listGoodsVo();
model.addAttribute("goodsList", goodsList);
SpringWebContext ctx = new SpringWebContext(request,response, request.getServletContext(),request.getLocale(), model.asMap(), applicationContext );
//手动渲染
html = thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx);
springboot2.x的写法:
WebContext ctx = new WebContext(request, response, request.getServletContext(), request.getLocale(), model.asMap());
//手动渲染
html = thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx);
4、最后再将渲染内容加入到redis
if(!StringUtils.isEmpty(html)) {
redisService.set(GoodsKey.getGoodsList, "", html);
}
二、客户端渲染方式(商品详情页)
####1、找到跳转到商品详情页的路径,修改为一个静态html的路径。 在商品列表页,找到跳转到详情页的动态路径,直接修改为一个静态路径,后缀为htm或shtml,总之不要是html即可,因为application.properties中一般会配置后缀为html的都访问templates文件夹下的。 注意代码中详情的链接,指向一个静态页面goods_detail.htm: ```html 秒杀商品列表
商品名称 | 商品图片 | 商品原价 | 秒杀价 | 库存数量 | 详情 |
http://blog.csdn.net/tTU1EvLDeLFq5btqiK/article/details/78693323
相关 |