redis 页面缓存html,springboot优化之redis页面缓存

对于一些不经常改变的页面,比如商品详情页,我们可以做静态化提升访问速度。

本文介绍另一种页面缓存实现策略,将页面缓存至redis中,从而减少对库的访问,提升访问速度。

代码@RequestMapping(value="/to_list", produces="text/html")

@ResponseBody

public String list(HttpServletRequest request, HttpServletResponse response, Model model,MiaoshaUser user) {

model.addAttribute("user", user);

//取缓存

String html = redisService.get(GoodsKey.getGoodsList, "", String.class);

if(!StringUtils.isEmpty(html)) {

return html;

}

List goodsList = goodsService.listGoodsVo();

model.addAttribute("goodsList", goodsList);

SpringWebContext ctx = new SpringWebContext(request,response,

request.getServletContext(),request.getLocale(), model.asMap(), applicationContext );

//手动渲染

String html = thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx);

if(!StringUtils.isEmpty(html)) {

redisService.set(GoodsKey.getGoodsList, "", html);

}

return html;

}

解释

首先我们从redis中取页面缓存,如果能取到直接返回。

如果redis中不存在缓存则需要我们手动渲染,即

SpringWebContext ctx = new SpringWebContext(request,response,

request.getServletContext(),request.getLocale(), model.asMap(), applicationContext );

//手动渲染

String html = thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx);

这里利用thymleaf的视图解析器获取到了对应的模板引擎,手动的对模型进行了渲染。将得到的html存入缓存同时返回页面。

model.asMap()

这个参数为页面模板中的参数,因此前面需要通过model.setAttribute()进行模板参数的填充

thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx);

这里解析的模板名称即默认下我们要返回的模板名称,直接传入即可。

注意 @RequestMapping需要添加produces=”text/html”属性标记返回的媒体格式为html文档。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值