购物车中每个页面的优化

本文关键字:优化 购物车 | 更新日期: 2023-09-27 17:52:43

我有一个用c#编写的MVC5项目,具有购物车功能,我将所有购物车详细信息存储在数据库中,因此每次用户浏览页面时,它都会显示当前购物车中有多少项。例如,如果用户在购物车中添加了产品a和B,那么它将在右上角显示"cart(2)"。我通过在每个页面调用数据库来获得这个数字,但这对我来说似乎是浪费。

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

购物车中每个页面的优化

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

可以缓存数据库调用,这样对页面的每个后续请求都将显示购物车数据的缓存版本。但是,您需要确保每次用户更新购物车中的项目(add、remove、qty等)时都从缓存中删除购物车对象,以便页面将请求最新版本的DB而不是缓存。

缓存来自DB的结果将不得不减少数据库服务器的负载和响应时间,因为更新购物车的调用将远远少于在每个页面视图中获取购物车的调用。这种做法的另一面是,它给系统带来了一定程度的复杂性,可能会影响测试等。您需要确定额外的复杂性是否值得。就我个人而言,我认为少量的复杂性是值得的。

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

我同意@Juzzbott的观点,在这里使用cookie并不是最好的选择,原因有很多。另一个选择是使用session states,但我不太喜欢它,因为它默认情况下存储在内存中,如果你需要为用户记住数据,这不是一个灵活的选择。

一种选择是使用.Net caching,它从 1.1版开始就存在了,设置一个基本的场景并不难,查看更多信息。

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