非注册用户的购物车

Posted

技术标签:

【中文标题】非注册用户的购物车【英文标题】:shopping cart for non registered users 【发布时间】:2010-11-25 11:15:06 【问题描述】:

我正在制作一个包含购物车的网站。 有两个主要要求:

    用户体验人员希望登录/身份验证成为整个工作流程的最后一步。用户可以进行所有购物,并且仅在结账时被要求登录。

    除非用户(无论是否注册)结帐,否则购物车不应过期(即使在浏览器关闭时也不应过期)。

在上述情况下,关于维护购物车的状态,我有以下问题:

我应该使用基于文件的会话还是数据库会话?请记住,这适用于未注册的用户。我担心我最终会在数据库中有很多记录。

另一种选择似乎是将购物车内容放入加密的 cookie 中,但 cookie 文件有大小限制。

在这种情况下你会怎么做?我真的很感激你的回答。

【问题讨论】:

【参考方案1】:

    跟踪用户。使用 GUID 编码成一个带有 n年届满。

    存放购物袋。您不想将袋子存放在 cookie 中,主要是因为它可能的大小。这留下了将其保存到介质并从介质中检索它的选项。使用除数据库之外的任何东西就像回到过去一样,数据库擅长存储和检索数据。

    管理您的购物袋。现在 您的架构问题,首先,如果 你将要运行查询 对着购物袋 数据库(即有多少购物 袋子里有物品x)你可能 想要一个传统的关系 架构。然而,这有开销 在插入方面。更新, 选择(和加入)和删除 包数据(在某些时候你会有 永远不会再使用的袋子 但正在占用宝贵的磁盘 空间)。对于一个繁忙的网站,这是一个 每秒相当少的 Traranactions, 但任何数据库都应该能够 应付。如果不需要查询 数据库中的购物袋, 然后您可以将其存储为 XML。只是 序列化包并将其倾倒到 表,以 PK 作为 GUID 存储在用户 cookie 中。这 会比 a 快很多 传统模式,另外你可以 总是撕开文件中的 XML 如果确实提出要求,未来 对于关系模式。

这就是我们的工作(Xml Bag),我们拥有一百万以上的客户群。

【讨论】:

【参考方案2】:

我会使用数据库管理会话而不是文件管理会话。确保您有会话时间戳,以便您最终可以终止旧会话(如果已经 12 个月,购物者可能不会回来购买最初在购物车中的商品)。

使用数据库而不是文件执行此操作将更容易最终使非常旧的信息过期。

请注意,数据库会话只有在其绑定到用户计算机上的 cookie 时才有效。如果用户从不同的浏览器返回商店,他们将找不到他们的会话。如果两个人共享同一台计算机,他们找到彼此的会话。希望购物车中没有可能令人尴尬的物品...

【讨论】:

【参考方案3】:

将 AnonymousSessionID 存储在 cookie 中,您可以将其与数据库中的购物车相关联。

然后您将有一个调度程序任务在一段时间(例如一天)后清除匿名会话。这将使您的数据库保持干净的废弃会话。

如果用户注册,您可以将他们的购物车与他们的帐户永久重新关联。如果用户下订单,您就清空他们的购物车。

【讨论】:

【参考方案4】:

如果您使用的是 ASP.NET,这就是我(即将)要做的事情:

使用Profile 尽快捕获用户的电子邮件(如果他们没有完成订单,发送电子邮件给他们)。即使用户尚未真正注册,您也可以启用持久保存到 aspnet 数据库的匿名配置文件属性。 将代表订单的 XML 包粘贴到会话中。这会以常规身份 ID 保存在数据库中。 将购物车的 ID 存储在 ASP.NET Profile 中。这样,当会话到期时,您可以从配置文件中的 ID 重新加载它。这样做的好处是用户永远不会在 cookie 中看到购物车 ID,并且您可以轻松地将会员/个人资料数据库与您用于订单的商店之间的记录关联起来

(不要尝试将 XML 顺序存储在配置文件中。我认为那是在询问性能问题。但理论上你可以假设)

【讨论】:

【参考方案5】:

根据这些规范,我将使用基于数据库的会话状态。但是您应该仔细阅读您选择的 Web 服务器中会话状态的处理方式。由于您希望能够将状态恢复到正确的人。

【讨论】:

【参考方案6】:

我认为您有一些期望需要管理,或者您可能不清楚要求。

    用户体验人员希望登录/身份验证成为最重要的 整个工作流程的最后一步。这 用户可以完成所有的购物和 仅在 退房。 购物车不应过期(即使在浏览器关闭时) 除非用户(注册与否) 退房。

具体来说,一个匿名的、未登录用户的购物车被保存了吗?那是疯狂。确保这不是预期,并在您的设计文档中加以说明。

【讨论】:

这根本不是疯子。我们经常在人们第一次访问我们的网站后 24-48 小时收到订单。即使他们没有创建帐户,我们也会保存订单。您需要小心何时清除数据,当然还有购物车有多大,并考虑您拥有多少用户。不给恕我直言的疯狂:-)

以上是关于非注册用户的购物车的主要内容,如果未能解决你的问题,请参考以下文章

错误:WooCommerce 避免为非登录用户添加到购物车

python web 购物车思路简洁版

web day24 小项目练习图书商城, 用户,模块(注册,激活,登陆,退出),分类/图书模块

为匿名用户提供与注册用户相同的功能

JavaWeb SSM SpringBoot+Vue+Redis实现的前后端分类版网上商城项目3(源码+sql可运行《精品毕设》)主要功能用户登录注册商城浏览购买订单购物车退货用户角色

快速下单!简化EcStore的购物结算流程