gpt4 book ai didi

performance - 从可伸缩性、性能、

转载 作者:行者123 更新时间:2023-12-01 11:05:07 26 4
gpt4 key购买 nike

我只想知道我对 REST 的看法是否正确。假设我们有一个购物网站。使用传统方法,购物车将存储在用户 session 中,因此服务器必须为用户管理许多项目(User#1:item1、item2、item3;User#2:itemA、itemB、item3,...) .因此,如果有超过 1000 名用户浏览网站并将商品添加到他们的购物车,服务器必须具有大量内存/计算能力。

在 REST 方法中没有 session ,因此客户端拥有关于购物车中商品的所有信息。这意味着服务器不需要这么大的内存需求,我可以很容易地扩展它。

现在,如果我将非 REST 方法中的项目添加到购物车,它将直接进入 session 。另一方面,如果我在 REST 方法中添加一个项目,我必须更新数据库中的实体 (/shoppingcart/1234/),这会花费更长的时间,因为我必须更深入一层(客户端->服务器->数据库)。

到目前为止这是正确的还是我遗漏或误解了一点?

最佳答案

In a REST approach there is no session, so the client has all information about the items in the shopping cart.

REST 无状态约束并不意味着客户端需要跟踪有关购物车中商品的所有信息(请不要那样做)。但这确实意味着购物车的状态是可寻址的(客户端拥有为请求提供服务所需的所有信息)。

考虑以下 URL:

/shopping-cart/john.howes

我对无状态约束的理解是,如果我或你或任何人导航到该链接,我们将获得相同资源的某种表示(假设我们有权查看它)。它可能是 XML 或 JSON 或 HTML,也可能是英语或法语,但底层资源是相同的。如果我将该 URL 加入书签并稍后在另一台设备上查看它或通过电子邮件将其发送给 friend ,我们将获得相同的资源(假设它仍然存在并且我们有权查看它)。

因此,因为我有一个指向/shopping-cart/john.howes 的链接,所以我拥有了为请求提供服务所需的所有信息。

Now if I add an item in the non-REST-approach to the shopping cart it would it would go directly in the session. If I add an item in the REST-approach I have to update the entity in the database (/shoppingcart/1234/) and this would take a bit longer since I have to go one level deeper (client->server->database).

我认为,无论您是否使用 REST,将大对象添加到 session 状态都是灾难的根源(为了可维护性、可伸缩性和健全性)。所以,我会硬着头皮使用数据库。我认为您基本上是对的:REST 并没有过多说明数据如何存储在服务器上,但它确实暗示您不会将用户 session 的当前状态存储在 Web 服务器的内存中。我认为您有很多优化性能的选项。将所有内容都保留在 session 中并不是一个很好的选择。

希望对您有所帮助。

约翰

关于performance - 从可伸缩性、性能、,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6677893/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com