页面缓存例子

转发页面:html

通常都是controller将数据转发到指定的模板上,模板引擎(视图解析器)(modelAndView)帮咱们去渲染页面,而后将渲染好的页面发给浏览器
另外一种作法是,咱们去用模板引擎加载数据,提早产生好页面,将这个页面的html语句做为json发送给浏览器redis

 @RequestMapping(value="/to_list",produces = "text/html")
    @ResponseBody
    public String list(HttpServletRequest request, HttpServletResponse response, Model model, MiaoshaUser user) {
        // 通常是token,而后对token从redis取user,user为空抛异常跳转(或者给出异常json),这里经过argumentResolver来封装成user;

        //取缓存
        String html = redisService.get(GoodsKey.getGoodsList, "", String.class);
        if(!StringUtils.isEmpty(html)) {
            return html;
        }
        List<GoodsVo> 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);//两个参数,一个模板名称,一个是IContext的实现类

        //存入的不是list数据,而是整个静态页面级的缓存
        if(!StringUtils.isEmpty(html)) {
            redisService.set(GoodsKey.getGoodsList, "", html);
        }
        return html;
    }
相关文章
相关标签/搜索