在接一个电商web项目,发现它购物车是通过服务器端内存实现的

发布于 2022-09-01 20:55:45 字数 110 浏览 21 评论 0

session里存储一个标识,用于关联购物车,购物车对象存储在服务器内存中。这是我第一次做电商的项目,所以也不知道别的电商的购物车一般是怎么实现的。比较好奇我这个项目的做法有什么利弊,属于什么水平,求指点?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

感性 2022-09-08 20:55:46

PHP提供的SESSION机制使用简单,但缺点也是很明显的,比如实现购物车功能:
一个在手机上登录的用户,添加了多个商品到购物车.
当这个用户在电脑上登录后,并不能获取购物车里的内容,因为这两次登录生成的PHP SESSION ID是不同的.
所以大多数网站,都是基于COOKIE和数据库实现身份验证和购物车等功能的.
先说身份验证,cookie里存用户ID和密码哈希,验证时根据ID查询数据库的用户密码,经过同样的哈希算法计算后,
跟$_COOKIE里的密码哈希比对,一致则通过认证.然后就可以根据用户ID查询购物车数据表里的商品记录了.

白衬杉格子梦 2022-09-08 20:55:46

一般都是用cookie实现

征棹 2022-09-08 20:55:46

iwebshop的吧,用session存很明显用户退出登录购物车就清空了;一般来说最好在数据库里建一张carts表,记住session id,user id,product id和规格产品id,只要用户不删除购物车一直会被保留

千寻… 2022-09-08 20:55:46

感觉缺少持久化和同步机制,还有LRU

↙厌世 2022-09-08 20:55:45

利:

  • 实现起来很简单

弊:

  • 内存占用跟访问量成正比,内存占满服务器就拒绝服务了

  • 不能进行集群扩展

  • 必须定时清理过期数据,否则内存会爆

裂开嘴轻声笑有多痛 2022-09-08 20:55:45

数据也不可靠,要是重新发版本所有用户的购物车就清空了,这也太悲剧了吧!偷懒的做法!

挽袖吟 2022-09-08 20:55:45

我也会这样去做. 好处是跨客户端.
不过我觉得直接存数据库会更好,用户量大的话怕查询慢可以分库分表. 内存存储数据是为了 cache,比如 memcache,redis 数据都是放在内存(虽然 redis 可以持久化).用来做对高频访问页面或者性能差的处理做缓存, 用来存购物车浪费.

风为裳 2022-09-08 20:55:45

可以考虑这样更改:
1.购物改用cookie实现,集群没啥问题,缺点cookie也有大小限制。
2.存后台的分布式memcache等高性能的nosql,定期清理过期的数据等也需要考虑。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文