页面优化技术

并发瓶颈在数据库,减少对数据库的访问,就是加不同粒度的缓存。
最大粒度优化是页面缓存,最小的是对象缓存对象。

页面缓存+URL缓存+对象缓存
1.页面缓存,针对商品列表页面

1.从缓存中取缓存页面
2.缓存中没有,从数据库中取数据,渲染到我们的html 中,并且将html保存到redis 数据库中。(缓存的时间应该不能够太大,设置为60s)
3.返回html

2.url 缓存,针对商品详情页面

1.从缓存中取缓存页面
2.缓存中没有,从数据库中取数据,渲染到我们的html 中,并且将html保存到redis 数据库中。(缓存的时间应该不能够太大,设置为60s)
3.返回html

之所以称为url 缓存主要是因为这里的页面需要传送goodID。

3.对象缓存,针对用户登陆模块

1.用户登陆时候,需要取用户的信息时候,首先从缓存中进行获取
2.缓存中没有进入到数据库中进行查询。
3.将对象放入到redis 缓存中,返回对象值

4.对象缓存,针对秒杀模块

判断用户是否针对同一个商品秒杀过,直接从redis中查询是否有该订单

对象缓存注意实项

如果用户进行密码更新时候,需要修改与该对象相关的所有缓存
1.对数据库中该字段更新
2.对用户登陆时候对象缓存进行更新,删掉原有的key,value ,重新写入
3.对用户页面验证时候(tokens,user) 缓存对象进行更新,更新key,value.删掉的话登陆信息将丢失。
先更新数据库,再更新缓存,为了防止缓存加载到旧的数据库中数据。

优化钱:QPS:1267/s load:15
优化后:QPS :2884/s load:5

页面静态化

将页面缓存到浏览器上,前后端分离。页面存html ,动态数据从接口获取。

1.针对商品详情页面

1.编写静态htm 文件。当从商品列表跳转过来后直接跳转到该静态文件,通过ajax 发送url:”/goods/detail/”+goodsId请求,获取controller 对应接口秒杀详情数据,并对该静态页面进行渲染。
2.点击秒杀时候,ajax 异步调用,发送url:/miaosha/do_miaosha post请求(需要传递 商品id 参数信息)实现秒杀功能,然后跳转到订单详情页(传入订单id 参数)。

2.针对订单详情页面

1.编写静态htm 文件。执行完秒杀后获取订单信息进入订单详情页面(传入订单的id)。
2.通过订单id,ajax 异步调用,发送url:”/order/detail”+orderId. 获取订单具体信息。

问题1:秒杀买超问题

在库存进行减少操作时候,在数据库端保证每次减少时候库存数量大于一

问题2:同一个用户多次秒杀

判断库存,判断是否下订单,无法解决同一个用户同时两个下单请求。
1)在创建订单表时候,添加唯一索引。(用户和商品)
2)通过输入验证码也可以从根源上防止同时的请求

静态资源优化

1.js/Css 压缩,减少流量
2.多个js/css 组合,减少连接数
CDN 内容分发网络

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值