day79_淘淘商城项目_商城购物车系统实现三种方案总结

时间:2022-07-25 17:25:09

1、商城购物车系统实现的三种方案

1.1、session

  将购物车直接存放到与用户相关的session中。
优点:
  代码实现超级简单。
缺点:
  购物车存在session当中,如果session销毁,购物车就没有了。(session只存在于一次会话中。)
  用户未登录的时候不能添加购物车。
  购物车使用了session,而session是存在于内存资源中,消耗了大量的内存资源。非常不好。
  集群情况下,session很难共享,无法进行水平扩展。(tomcat的session广播对资源消耗严重,即tomcat的带宽不干别的了,就去广播了。)

1.2、cookie

  将购物车直接存放到浏览器的cookie中。
优点:
  在不登陆的情况下也可以添加购物车。
  不占用服务端存储空间。
  用户体验好。
  代码实现简单。
缺点:
  cookie中保存的容量有限。最大4k。
  cookie占用的是浏览器的缓存,可能用户会定期删除cookie。
  把购物车信息保存在cookie中,更换设备购物车信息不能同步。

1.3、cookie+入库 / 直接入库

  对于未登陆用户,将购物车放到cookie中,对于已登陆用户将购物车放入数据库中。
  将购物车持久化到数据库中。这里的数据库指的是关系型数据库或者非关系型数据库
优点:
  关系型数据库:mysql数据库(数据完整性比较好)
  非关系型数据库:redis数据库(读写速度快)
缺点:
  相对于session和cookie,没啥缺点。
  占用服务端资源。

2、购物车实现总结

  自己写着玩的代码可以使用cookie+session。
  真实场景应该是要使用cookie+入库,或者直接入库。
  京东准许未登录状态添加购物车,应该采用的是cookie+入库。
  淘宝并不准许用户未登录添加购物车,应该采用的是直接入库。