商城设计要点(三)-购物车,混合存储

zszdevelop大约 2 分钟

商城设计要点(三)-购物车,混合存储

1. 简介

购物车是电商系统的标配功能,暂存用户想要购买的商品。分为添加商品、列表查看、结算下单三个动作。

技术设计并不是特别复杂,存储的信息也相对有限(用户id、商品id、sku_id、数量、添加时间)。这里特别拿出来单讲主要是用户体验层面要注意几个问题:

1.1 未登录时添加商品

添加购物车时,后端校验用户未登录,常规思路,引导用户跳转登录页,待登录成功后,再添加购物车。多了一步操作,给用户一种强迫的感觉,体验会比较差。有没有更好的方式?

如果细心体验京东、淘宝等大平台,你会发现即使未登录态也可以添加购物车,这到底是怎么实现的?

2. 解决

细细琢磨其实原理并不复杂,服务端这边在用户登录态校验时,做了分支路由

  1. 当用户未登录时,会创建一个临时Token,作为用户的唯一标识,购物车数据挂载在该Token

  2. 为了避免购物车数据相互影响以及设计的复杂度,这里会有一个临时购物车表。

    当然,临时购物车表的数据量并不会太大,why?用户不会一直闲着添加购物车玩

  3. 当用户登录后,查看自己的购物车,服务端会从请求的cookie里查找购物车Token标识,并查询临时购物车表是否有数据,然后合并到正式购物车表里

  1. mall 商城项目未采用该方案
  2. Mall 购物车一定要登录才能使用

3. 特别说明

临时购物车是不是一定要在服务端存储?未必。

有架构师倾向前置存储,将数据存储在浏览器或者APP LocalStorage,这部分数据毕竟不是共享的,但是不太好的增加了设计的复杂度。

  • 客户端需要借助本地数据索引,远程请求查完整信息
  • 如果是登录态,还要增加数据合并逻辑

考虑到这两部分数据只是用户标识的差异性,所以作者还是建议统一存到服务端,日后即使业务逻辑变更,只需要改一处就可以了,毕竟自运营系统,良好的可维护性也需要我们非常关注的。

参考文章

聊聊电商系统中常见的9大坑!库存超卖、重复下单、物流单ABAopen in new window

Loading...