我会说存储服务器上的某个地方的状态,并将其关联到用户的会话。虽然cookie在表面上可能是存储事物的平等位置,但如果考虑安全性和数据大小,尽可能多地在服务器上保留数据会成为一件好事。
例如,在公共终端设置中,有人查看cookie的内容并查看列表是否可以?如果是这样,饼干很好;如果没有,您只需要一个将用户链接到数据的ID。这样做还可以确保用户通过网站身份验证以获取该数据,而不是将所有内容存储在计算机上 - 他们需要某种形式的凭证以及会话标识符。
从尺寸的角度来看,当然,你不会过于担心4K cookie或浏览器/宽带用户的东西,但如果你的目标之一是允许手机或黑莓(不是3G)连接起来并拥有精彩的体验(而不是为数据收取费用),最大限度地减少传递给客户端的数据量是关键。
服务器存储还为您提供了一些其他答案中提到的一些灵活性 - 用户可以将他们的购物车保存在一台计算机上并在另一台计算机上恢复工作;您可以将购物车绑定到某种形式的凭证(而不是暂时会话),并在用户清除cookie后长时间保持购物车的状态;您可以通过容错的方式获得更多信息 - 如果用户的浏览器崩溃,该站点仍然具有安全可靠的数据。
如果容错很重要,则需要某种类型的持久性存储,如数据库。如果没有,应用程序内存可能没问题,但如果应用程序重新启动,则会丢失数据。如果您处于农场环境中,则该商店必须集中访问,因此您再次查看数据库。
您是否选择通过临时会话或通过凭证输入密钥将取决于用户是否可以保存其数据并稍后返回以获取该数据。瞬时会话最终会被清理为“废弃”,也许没问题。绑定到用户配置文件将让用户保留他们的数据并明确放弃它。无论哪种方式,我都会利用某种支持存储,如数据库来提供容错和中央可访问性。 (或者,也许我是过度工程的解决方案?)
甚至可能没有数据库(至少不是关系数据库)...:) – stevenharman 2008-09-18 19:53:04
将它存储在你的“服务器端”数据存储:)。为什么有2个不同的数据存储?存储服务器端增加了更多的灵活性和安全性。 – 2008-09-18 19:59:46