每页优化中的购物车

时间:2015-06-03 03:24:10

标签: c# asp.net-mvc optimization

我有一个用C#编写的带有购物车功能的MVC5项目,我将所有购物车详细信息存储在数据库中,因此每当用户浏览页面时,它将显示购物车中当前有多少商品。例如,如果用户在购物车中添加产品A和B,则会在右上角显示“CART(2)”。我通过在每个页面调用数据库得到这个数字,但这对我来说似乎是一种浪费。

到目前为止,我在数据库中没有问题但是因为该网站仍然是新的,我担心这会在以后成为一个问题。这是购物车的正常方法还是有其他方式吗?

任何帮助都会受到赞赏并为糟糕的英语道歉。

2 个答案:

答案 0 :(得分:1)

不幸的是,如果没有适当的缓存策略,这实际上是唯一可靠的方法。

您可以缓存数据库调用,以便对页面的每个后续请求都将显示购物车数据的缓存版本。但是,每当用户更新其购物车中的项目(添加,删除,数量等)时,您需要确保从缓存中删除购物车对象,以便页面将请求最新版本的数据库缓存。

缓存数据库中的结果必须减少数据库服务器的负载和响应时间,因为更新购物车的次数远远少于在每个页面视图上获取购物车的次数。另一方面,它在系统中引入了一定程度的复杂性,可以/将影响测试等。您需要确定额外的复杂性是否值得。就个人而言,我会打电话说少量的复杂性是值得的。

我还会避免使用cookie来存储购物车数据,因为Cookie应该被视为易失性,因为用户可以随时删除/禁用它们。

答案 1 :(得分:0)

我同意@Juzzbott并且使用cookies不是最好的选择,原因有很多。另一个选择是使用session states,但我并不是它的忠实粉丝,默认情况下它存储在内存中,如果您需要记住用户的数据,这不是一个灵活的选项。

一个选项是使用.Net caching它自 1.1版之后就已存在,并且设置基本方案check this out以获取更多信息并不是很难。

当然,您可以检查其他库以及其中一些库和开源。在工作中,我们使用redis,这对我们很有用。