防止瞬间的访问
首先去缓存中取,找到直接返回,没有就渲染返回,在缓存
比如商品列表,访问的话是 goods_list 模板
将数据放到 model中然后去渲染模板
改为 直接返回 html
先创建一个对商品的前缀,用于存入 redis中
GoodsKey设置,设置默认缓存。60s
public class GoodsKey extends BasePrefix {
private GoodsKey(int exprieSeconds,String prefix) {
super( exprieSeconds,prefix);
}
public static GoodsKey getGoodsList = new GoodsKey(60,"gl");
}1
2
3
4
5
6
7
8
9
控制器请求商品列表
@Autowired
ThymeleafViewResolver thymeleafViewResolver;
@Autowired
ApplicationContext applicationContext;
@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);
// return "goods_list";
SpringWebContext ctx = new SpringWebContext(request,response,
request.getServletContext(),request.getLocale(), model.asMap(), applicationContext );
//手动渲染
html = thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx);
if(!StringUtils.isEmpty(html)) {
redisService.set(GoodsKey.getGoodsList, "", html);
}
return html;
}