商城设计要点(三)-购物车,混合存储
...大约 2 分钟
商城设计要点(三)-购物车,混合存储
1. 简介
购物车是电商系统的标配功能,暂存用户想要购买的商品。分为添加商品、列表查看、结算下单三个动作。
技术设计并不是特别复杂,存储的信息也相对有限(用户id、商品id、sku_id、数量、添加时间)。这里特别拿出来单讲主要是用户体验层面要注意几个问题:
1.1 未登录时添加商品
添加购物车时,后端校验用户未登录,常规思路,引导用户跳转登录页,待登录成功后,再添加购物车。多了一步操作,给用户一种强迫的感觉,体验会比较差。有没有更好的方式?
如果细心体验京东、淘宝等大平台,你会发现即使未登录态也可以添加购物车,这到底是怎么实现的?
2. 解决
细细琢磨其实原理并不复杂,服务端这边在用户登录态校验时,做了分支路由
当用户未登录时,会创建一个临时
Token
,作为用户的唯一标识,购物车数据挂载在该Token
下为了避免购物车数据相互影响以及设计的复杂度,这里会有一个临时购物车表。
当然,临时购物车表的数据量并不会太大,why?用户不会一直闲着添加购物车玩
当用户登录后,查看自己的购物车,服务端会从请求的cookie里查找购物车
Token
标识,并查询临时购物车表是否有数据,然后合并到正式购物车表里。
- mall 商城项目未采用该方案
- Mall 购物车一定要登录才能使用
3. 特别说明
临时购物车是不是一定要在服务端存储?未必。
有架构师倾向前置存储,将数据存储在浏览器或者APP LocalStorage
,这部分数据毕竟不是共享的,但是不太好的增加了设计的复杂度。
- 客户端需要借助本地数据索引,远程请求查完整信息
- 如果是登录态,还要增加数据合并逻辑
考虑到这两部分数据只是用户标识的差异性,所以作者还是建议统一存到服务端,日后即使业务逻辑变更,只需要改一处就可以了,毕竟自运营系统,良好的可维护性也需要我们非常关注的。
参考文章
赞助