秒杀功能(4)缓存技术

本文探讨了秒杀功能的页面优化,重点介绍了页面缓存、URL缓存和对象缓存的实现,通过缓存技术显著提高了TPS。在页面缓存中,通过修改Controller层代码,手动渲染页面并设置合理有效期。URL缓存和对象缓存进一步细化了缓存策略。此外,文章还提到了JMeter压测的重要性以及缓存分类的多种方式,以减轻数据库压力并处理数据一致性问题。
摘要由CSDN通过智能技术生成

从这一节开始就是讲如何优化秒杀的功能了。第一步考虑的是页面优化技术

页面优化技术有:
  1. 页面缓存 + URL缓存 + 对象缓存
  2. 页面静态化,前后端分离
  3. 静态资源优化
  4. CDN优化

这篇文章先讲第一项:页面缓存 + URL + 对象缓存 具体如何实现。

页面缓存

在controller层的GoodsController中以获取商品列表的list方法举例。将原本springboot自动渲染页面改成手动渲染,把页面放在缓存里。

  • 修改前的代码为:
	@RequestMapping("/to_list")
    public String list(Model model, HttpServletResponse response,
                       @CookieValue(value = MiaoshaUserService.COOKI_NAME_TOKEN,required = false) String cookieToken,
                       @RequestParam(value = MiaoshaUserService.COOKI_NAME_TOKEN,required = false) String paramToken) {
   
        if (StringUtils.isEmpty(cookieToken) && StringUtils.isEmpty(paramToken)) {
   
            return "login";
        }
        String token = StringUtils.isEmpty(paramToken)?cookieToken:paramToken;
        MiaoshaUser user = userService.getByToken(response,token);//从token中读用户信息
        model.addAttribute("user", user); //将user对象和goods_list.html页面中的user“关联”
        //查询商品列表
        List<GoodsVo> goodsList = goodsService.listGoodsVo();
        model.addAttribute("goodsList", goodsList);
        return "goods_list"; //返回goods_list.html
    }

大致步骤是:先通过缓存中的token获取用户;再从数据库中获取商品列表;最后渲染页面。

  • 修改后的代码为:
	@RequestMapping(value = "/to_list", produces = "text/html")
    @ResponseBody
    public String list(Model model, HttpServletResponse response, HttpServletRequest request,
                       @CookieValue(value = MiaoshaUserService.COOKI_NAME_TOKEN, required = false) String cookieToken,
                       @RequestParam(value = MiaoshaUserService.COOKI_NAME_TOKEN, required = false) String paramToken) {
   
        if (StringUtils.isEmpty(cookieToken) && StringUtils.isEmpty(paramToken)) {
   
            return "login";
        }
        String token = StringUtils.isEmpty(paramToken) ? cookieToken : paramToken;
        MiaoshaUser user = userService.getByToken(response, token);//从token中读用户信息
        model.addAttribute("user", user); //将user对象和goods_list.html页面中的user“关联”
        //
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值