购物车的主要作用是临时存储要购买的商品,然后在结算或下订单时删除购物中的所有数据。购物车的主要数据结构包括:用户ID,产品ID,产品规格ID和产品数量。
购物车有离线购物车、在线购物车两种。在电子商务产品中,对于是否需要在购物车中同步不同终端的数据,对应两种不同的购物车实现方式:
1
不需要多终端同步购物车数据,且购物车数据不重要的情况下,可以选择将购物车的所有数据缓存在用户本地Session,如离线购物车。
这种方法的优点在于:
不需要服务器参与,可以减轻服务器压力
在用户体验中,购物车的数据刷新更快。
缺点在于:
由于数据不在云服务器上,因此当用户更改终端设备或清除缓存时,购物车中的数据会丢失。
以这种方式实现购物车的场景:
从用户行为的角度来看,当用户想要购买某个商品时,用户将直接下订单进行结算,并且该过程不需要购物车参与;即使用户首先将产品放入购物车中,然后进入购物车进行结算,或者放弃交易。在下次用户再次购买时,先进入购物车购买商品的概率非常低。
通常他还是会选择重新进入产品详细页,再次下订单付款。这种场景下,购物车中的数据并不是非常重要,因此,购物车的数据可以保存在本地缓存。
也许有人会说:现在是大数据环境,谁拥有数据谁就拥有用户和价值。所以,如果购物车存储在本地,那么平台就无法获得这些数据。
可是,我们是否想过,平台需要什么样的用户购物数据?
拿这些用户购物数据做什么呢?
如果用户在购物车中的商品自己都不需要,平台拿到后又能有多少用处呢?
是否需要对用户的订单(付费或待定)数据更重视呢?
以用户的订单数据来分析用户的行为是否更准确,而不需要使用购物车中的数据?
歪楼了,我们继续购物车实现的讨论。
小程序的数据缓存,官方己经声明永久存储。因此,应算是保存在缓存中的购物车数据,只要用户没有主动清理数据或更改手机登录,这些数据就不会丢失。
2
需要在多终端设备上同步的数据,数据要存储在云服务器上。
这种方法的缺点在于:
每次进入购物车或进行购物时,都需要加载云服务器,这在一定程度上将增加服务器压力,增加用户的等待时间。
上面的两种方法,每一种都有优点和缺点。实际上,在实施项目时,选择哪种方法是基于产品经理或客户的实际需求。
在方法的使用时,可以不用必须选择某一种方式,完全可以:用户不登录就添加商品到本地购物车;用户登录后,连带用户状态将Session中的信息存入服务器数据库,将购物车内的东西持久化存储。
但要特别说明的是,把购物车数据存入本地时,要注意:
Session:代表一次有效会话(在用户不关闭浏览器的前提下,默认存在30分钟;用户关闭浏览器再次打开后,未登录用户的购物车将清空。)
这时,我们要在需求中明确,如何用Session存储购物车内数据的两个重要问题:
一、如何准确区分不同的商品
二、如何准确标记进入购物车的商品?
区分不同的商品,自然是使用商品ID。通过商品ID,我们可以查询到商品详情,如:价格、名称等等。这样就能够区分出不同用户的购物车数据。
但要准确标记进入购物车的商品,仅仅用商品ID就不够了,必须还要同时记录同一商品的购买数量(购买数量并不存在于商品详情)。这样,才能对进入购物车的商品与货价商品进行区分。
以上都是购物车实现时的细节需求,如有疑问欢迎交流!