我的浏览器中有多个 AJAX 请求。我的 UI 由多个视图组成,并且 AJAX 请求正在尝试同时填充这些视图。在某些情况下,我需要从客户端发送超过 10 个同时请求并在服务器上同时处理。
但是由于浏览器对单个域的最大并发请求的限制以及由于 HTTP 的“服务器必须以与接收请求相同的顺序发送对请求的响应”约束,我在请求处理中获得的并发性不如我会想要。
从我的应用程序的角度来看,我不需要按照我发送请求的顺序来响应。例如,如果 view8 在 view1 之前填充,我可以。
使用 Servlet 3.0 构造的异步处理似乎只解决了问题的一方面(服务器端),因此无法充分利用来最大化应用程序并发性。
我的问题是: 我错过了一些适当的结构吗?(与“从不同的子域托管您的图像 ”之类的解决方法相比,“适当”)可以为我带来更多的并发性?
这似乎是许多 Web UI 需要的东西!如果不是,那么我设计 UI 的方式是错误的。无论哪种情况,我都会感谢您的意见。
Edit1:对我来说,我不必支持大量并发客户端。访问该应用程序的最大并发客户端数将小于 100。鉴于这一事实,当我在服务器端拥有充足的可用处理能力时,基本上是在尝试增强这些客户端的体验。
Edit2:我们的应用程序/API 不用于“公共”消费。例如:它就像我公司的网络邮件应用程序。它托管在互联网上,但并不适合所有人的消费。仅供相关少数人食用。提供该信息的原因是将我的应用程序与 SO/Twitter 区分开来,这似乎将他们的(REST)API 用户与他们的普通网站用户区分开来。在我们的案例中,我们认为我们不应该以这种方式进行区分,而是希望为两者提供单一的 REST 端点。
规范(RFC2616)中限制背后的原因似乎是:“这些指南旨在改善 HTTP 响应并避免拥塞。”。不过,内网网页应用有更多的奢侈品,不应该这么拘束!?