1

我正在尝试找出 oldnavy.ca 上的一页结帐系统。

如果你能花时间把一些东西扔进购物车里,看看它是什么样子,我将不胜感激。

让我困惑的是,刷新页面会保存进程的当前状态。因此,如果您创建您的登录名并添加您的送货地址,如果您点击刷新,它将在那里。

阅读很多文章听起来像使用会话变量来存储大量数据并不被认为是好的编程。现在,存储表单数据(如运输信息等)是否被视为“大量”数据?

我只是想知道他们是如何实现这个购物车系统的,因为它无处不在,如果它有效,我不想不愿意使用会话变量。

也许有替代品在使用?

谢谢

4

1 回答 1

0

没有硬性和快速的答案,只有指导方针。

如果您使用标准 PHP 会话,它们将保存在服务器磁盘上的纯文件中,每个活动会话一个。这也意味着在每次页面加载时,相关的会话文件都会从磁盘读取到内存中。多少是“太多”取决于许多因素......

  • 将文件从磁盘读取到内存需要多长时间?
  • 磁盘缓存可以防止每次访问物理磁盘,但是文件越大,磁盘缓存中的文件就越少
  • RAM中的数据占用多少内存?
  • 序列化数据并将其写回磁盘需要多长时间?
  • 您有多少并发用户需要 PHP 一直读取和写入磁盘?
  • 会话活动多​​长时间,即在垃圾收集之前,磁盘周围会散落多少会话文件?

对于典型的小型网上商店(不是亚马逊大小),答案是基于文件的会话通常非常好。您可能会在每个文件中最多存储几十 KB,这对于保存用户的地址数据和购物篮来说已经足够了。你几乎不会遇到这个问题。

或者,只有其他会话处理程序。您可以将它们保存在 memcache 存储或数据库中,这可以缓解许多基于文件的问题。评估哪种解决方案更适合您的情况。

于 2012-09-11T14:35:37.157 回答