0

我的浏览器中有多个 AJAX 请求。我的 UI 由多个视图组成,并且 AJAX 请求正在尝试同时填充这些视图。在某些情况下,我需要从客户端发送超过 10 个同时请求并在服务器上同时处理。

但是由于浏览器对单个域的最大并发请求的限制以及由于 HTTP 的“服务器必须以与接收请求相同的顺序发送对请求的响应”约束,我在请求处理中获得的并发性不如我会想要。

从我的应用程序的角度来看,我不需要按照我发送请求的顺序来响应。例如,如果 view8 在 vi​​ew1 之前填充,我可以。

使用 Servlet 3.0 构造的异步处理似乎只解决了问题的一方面(服务器端),因此无法充分利用来最大化应用程序并发性。

我的问题是: 我错过了一些适当的结构吗?(与“从不同的子域托管您的图像 ”之类的解决方法相比,“适当”)可以为我带来更多的并发性?

这似乎是许多 Web UI 需要的东西!如果不是,那么我设计 UI 的方式是错误的。无论哪种情况,我都会感谢您的意见。

Edit1:对我来说,我不必支持大量并发客户端。访问该应用程序的最大并发客户端数将小于 100。鉴于这一事实,当我在服务器端拥有充足的可用处理能力时,基本上是在尝试增强这些客户端的体验。

Edit2:我们的应用程序/API 不用于“公共”消费。例如:它就像我公司的网络邮件应用程序。它托管在互联网上,但并不适合所有人的消费。仅供相关少数人食用。提供该信息的原因是将我的应用程序与 SO/Twitter 区分开来,这似乎将他们的(REST)API 用户与他们的普通网站用户区分开来。在我们的案例中,我们认为我们不应该以这种方式进行区分,而是希望为两者提供单一的 REST 端点。

规范(RFC2616)中限制背后的原因似乎是:“这些指南旨在改善 HTTP 响应并避免拥塞。”。不过,内网网页应用有更多的奢侈品,不应该这么拘束!?

4

1 回答 1

1

服务器公开 REST API,因此 UI 为各种资源类别(例如:博客、视频、新闻、文章)生成特定的 GET。由于每个资源类别都有其独有的视图,因此它们都非常适合。在一个请求中整理将博客和视频放在一起的请求感觉不对。不是吗?

好吧,恕我直言,务实更重要。当然,服务公开 RESTful API 是有意义的,但并不总是需要将整个 API 公开给浏览器。您的 API 可以与服务器端 Web 应用程序分开。您始终可以在服务器端发出多个 API 请求,整理结果并将它们发送回客户端。例如,查看 SO 主页。StackOverflow API 确实公开了一个 RESTful API,但是在加载主页时,浏览器不会发送多个请求,只是为了填充标签、线程列表等。

感谢桑杰的建议。但我们希望为 REST 客户端和浏览器客户端提供单一 API。有趣的是,SO 的 REST API 中没有提到根 URI“stackoverflow.com”,但浏览器客户端使用它。我想如果他们暴露了根 URI,他们的响应将很难处理(因为它会是数据的混合)。他们的 REST API 是细粒度的(就像在我的应用程序中一样),但他们的 javascript 代码使用其他一些门(API)来减少数量。往返服务器!不知何故,这感觉不对(虽然我是这个领域的新手)。随时纠正我

SO不使用任何“其他门”。只是他们根本不会发送 10 个并发请求来填充页面上的内容。他们在您投票时提出 XHR 请求,将线程标记为收藏,评论等。对于加载页面本身,没有多个请求。如果您想直接从浏览器访问您的 RESTful API,则必须遵守这些限制。要么采用桌面方式,要么允许您几乎无限地连接到您的服务器,但我想您不想走那条路......

于 2013-04-05T17:38:19.210 回答