頁面緩存例子

轉發頁面: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;
    }
相關文章
相關標籤/搜索