Java高並發優化之幸運飛艇平臺開發頁面緩存
阿新 • • 發佈:2018-07-20
model user 如果 clas att 操作 .com 而且 ood 幸運飛艇平臺開發 Q1446595067
首先跟著樓主來簡單了解一下頁面緩存的含義:
首先跟著樓主來簡單了解一下頁面緩存的含義:
頁面緩存
頁面緩存是將動態頁面直接生成靜態的頁面放在服務器端,用戶調取相同頁面時,靜態頁面將直接下載到客戶端,不再需要通過程序的運行和數據庫的訪問,大大節約了服務器的負載。每次訪問頁面時,會檢測相應的緩存頁面是否存在,若不存在,則連接數據庫得到數據渲染頁面並生成緩存頁面文件,這樣下次訪問的頁面文件就發揮作用了。
接下來樓主將用一個簡單的例子來帶大家走進頁面緩存的世界:
1.假如有一個這樣的代碼(他的功能是展現商品的列表,這裏講的框架是SpringBoot,前端用的themleaf模板)
@RequestMapping("/goods/to_list") public String list(Model model, MiaoshaUser user ) { model.addAttribute("user", user); // 查詢商品列表 List<GoodsVo> goodsList = goodsService.listGoodsVo(); model.addAttribute("goodsList", goodsList); return "goods_list"; }
我們從上面的代碼得知:該代碼是查詢出商品列表然後轉到goods_list.html的前端頁面上(配置文件省略),我們可以得知.將goodsList參數通過model傳給goods_list頁面,這其中是通過SpringBoot框架來進行渲染的.其中牽扯很多代碼的運行,比較耗時間;而且每執行這個代碼一次,SpringBoot就要渲染一次,非常的麻煩;
2.接下來我們就按照上面的例子作為例子來講解頁面的緩存(使用頁面緩存的代碼如下:)
@RequestMapping(value = "/goods/to_list", produces = "text/html") @ResponseBody public String list(Model model, MiaoshaUser user, HttpServletRequest request, HttpServletResponse response) { model.addAttribute("user", user); // 查詢商品列表 List<GoodsVo> goodsList = goodsService.listGoodsVo(); model.addAttribute("goodsList", goodsList); // 使用頁面緩存 1.查詢redis對應的緩存 2.不存在則寫入redis緩存中 // 1.查詢redis String html = redisService.get(GoodsKey.getGoodsList, "", String.class); if (!StringUtils.isEmpty(html)) { return html; } // 假如redis查詢不到數據,則:熏染html(通過SpringBoot的themleafViewResovler接口的實現類SpringWebContext來操作) SpringWebContext ctx = new SpringWebContext(request, response, request.getServletContext(), request.getLocale(), model.asMap(), applicationContext); // 手動進行渲染:thymeleafViewResolver html = thymeleafViewResolver.getTemplateEngine().process("goods_list", ctx); // 2.將手動渲染完畢的html存放到redis中 if (!StringUtils.isEmpty(html)) { redisService.set(GoodsKey.getGoodsList, "", html); } return html; }
我們從上面的代碼得知:頁面緩存是首先從redis中取出渲染好的頁面,如果不存在,那麽則自己手動渲染頁面一次,再把通過
thymeleafViewResolver渲染好的頁面存入到緩存中去!我們設置的頁面緩存時間為60s(在配置文件中,這裏就省略了),說明多個請求對於這段代碼來說,在60s內都只會從緩存中去取,這樣大大的提高了效率,節省了很多時間
使用場景:頁面緩存多用於變化不明顯的頁面,比如商品列表等等!
Java高並發優化之幸運飛艇平臺開發頁面緩存