购物车的存储形式:
1.有两种情况:已登录和未登录;
2. 使用 Cookie的优缺点:
无需登录,无需查库,保存在浏览器端(cookies大小限制在4k)
优点:性能好,访问快,没有和数据库交互
缺点:1.换电脑购物车数据会丢失(没有登录的情况下)
2.电脑被他人登陆,隐私安全无保证
3.使用 Session:(不推荐)
用户登录后,购物车数据放入用户会话
优点:初期性能较好,访问快(流量少的情况)
缺点:1.session 基于内存,用户庞大影响服务器性能
2.只能存在于当前会话,不适合集群和分布式系统
4.使用数据库:(不推荐)
用户登录后,购物车数据放入数据库
优点:数据持久化,可在任何地点,任何时间访问
缺点:频繁读写数据库,造成数据库压力
5.使用 Redis:(推荐)
用户登录后,购物车数据存入redis缓存
优点:1.数据持久化,可在任何地点,任何时间访问(性能比数据库高)
2.频繁读写只基于缓存,不会造成数据库压力
3.适用于集群和分布式系统,可扩展性强
=======================================
一般使用 cookies+redis:在用户未登录的情况下,使用cookies,已登录,使用 cookies+redis
我是后端的,且对前端不是很熟悉,所以只讲解后端的:
1.在要结算时,如果用户已经登录,此时还要讲所要结算的商品的品类ids传到后端,重新查询商品信息(主要是价格),然后再次返回给前端【主要是商品的价格可能会变化】
2.删除某商品,如果用户未登录,直接在前端的cookies中删除,如果已登录,还要将该商品的品类id和用户id 传到后端,删除redis缓存中的信息,同时前端删除cookies中的信息,以达到同步删除的效果