在会话中存储购物车

时间:2008-11-18 01:25:08

标签: asp.net session

我知道购物车商品等信息的一般共识是将它们存储在会话中。但是属于用户的对象可以被其他用户更改呢?比如说,像一个类似eBay的网站。如果您在会话中存储用户的“项目”,其中包含当前的出价金额,而另一个用户进入并对该项目进行出价,则您必须同时更新数据库中的项目以及会话中的项目,不是吗?

在这样的情况下,只有当其他用户采取的任何操作影响一个人的会话值或将所有内容存储在数据库中并且每次都检索它时,才会存储会话和刷新的唯一选项(如果你有,那么可能会变得昂贵每页的侧面板上显示的出价。)

2 个答案:

答案 0 :(得分:6)

我会将它全部存储在数据库中并每次检索它。根据数据的易变性,几秒钟的缓存可能是有序的。最大的问题是保持两者一致。

我认为每次检索数据并不像您想象的那么昂贵。如果您基于密钥查找数据库,则数据库非常有效。我在简单性(存储在DB和检索)方面是错误的,直到性能问题出现在负载下(即在负载测试中)。

如果只有少数几次,您可以使用应用程序缓存(除非您有多个工作进程/服务器)并确保数据库和缓存保持同步。

答案 1 :(得分:4)

我会将其个人存储在数据库中。首先,因为您的数据更加安全,并且在您需要Web场的情况下更容易共享。此外,您不需要在每个页面上都有数据。就在用户去购物车的时候。将其存储在数据库中的另一个好处是,您可以稍后分析人们添加到购物车中的内容,但不会实际购买。