您的位置:首页 > 运维架构 > 网站架构

电商网站中购物车功能模块完善

2017-12-08 16:47 399 查看
主要有两方面的问题:

1、登录状态下添加商品到购物车

此时购物车是对应一个用户,很简单,就是将商品的数据插入数据库中即可,但是如果读写频繁的时候,就存在压力问题,此时我们可以使用Redis担任读的部分功能。

2.未登录下加入购物车,登录下合并购物车

在未登录状态下,没有指定的用户,此时购物车应该怎么分配,数据把偶才能在什么位置,这个其实也不难,我们可以将数据临时保存到Redis中,并不插入数据库中,因为此时没有对应的用户,Redis生成一个唯一的outerKey,保存到cookie中,每次添加商品,带上这个cookie,这样就保证每次加入同一个购物车,这个数据会被保存一段时间。

如何将未登录状态下的购车和登录状态下的购车数据合并?

当用户登录的时候,我们该如何将未登录状态下的购车和登录状态下的购车数据合并呢。这个就需要使用到消息了,我们可以发送一个消息给后台系统,将未登录状态下的outerKey传递给后台系统,后台系统到Redis中查询到未登录状态下的购物车,将购物车中的数据插入到数据库中,和之前登录状态下的购车数据合并,重新缓存到Redis中,此时缓存到Redis中的购物车是和未登录状态不同的,因为这个缓存的购物车是有主人的,未登录状态下缓存的临时购物车是没有主人的

对比三大巨头:

再反观各大电商网站,基本上分为三个流程:

一.例如淘宝,你浏览商品是可以的。但是如果你要添加商品到购物车的话就需要登录;



二.例如京东,无论是未登录还是登录的用户都可以使用将需要的商品添加入购物车内;



三.例如苏宁跟京东类似,可以在用户未登录的状态下加入购物车,然后再合并。



以上各有利弊:、



利用cookie来作为用户未登录状态下加入购物车,但是不同设备之间的数据同步是一个问题?

强制用户登录可以解决这个问题,那么还有其他好的方式吗?

未登录的时候购物车的商品如何与用户的登录后的购物车的商品进行合并?

这些涉及到的技术有哪些?

3、未登录的状态下,使用cookie来保存购物车商品?

主流的浏览器:

cookie --- value 4kb 如果超过规定的大小,那我们cookie则无法保存到本地(无法被设置)

解决办法:sku减肥,尽量缩短sku的大小

4、用户登录后如何合并未登录前的购物车和登录后的购物车?

借阅上面博主的思路:使用RabbitMQ来实现合并。发送消息机制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: