【发布时间】:2013-11-29 13:54:20
【问题描述】:
我需要向服务器发送很多请求 50-100 个请求来加载数据,每个响应至少有 0.5KB 和最多 7KB 的数据。
我使用 ajax 发送请求如下:(代码已简化)
for (var i=0; i<elements.length; i++) {
var element = elements[i];
// make ajax call with element as parameter and update page to show data for element
}
这可以满足我的需求,因为我不需要按顺序从服务器获取数据,而且它大部分时间都可以使用。 但是有时最后几个元素没有加载,我在我的 chrome javascript 控制台中收到 communication link failure 错误。
我假设服务器超载了,我该如何规范发送请求以确保我在尽可能短的时间内收到每个请求的响应?
注意事项:
- 我在后端使用 Spring MVC
- 我使用 ExtJS Ajax 发出请求
【问题讨论】:
-
听起来您应该找到一种方法将其转换为一次发送/接收所有元素的数据的单个 AJAX 请求。特别是因为所有请求都发生在同一个 for 循环中;它们基本上已经相互关联了。
-
@Cuberto,我不想这样做有两个原因。 1)我不希望用户等待,我希望用户尽快看到每个元素的数据,以及 2)未来请求的数量可能会增加,这将使获取所有数据的速度变得特别慢一次。
-
你能得到分段的数据吗?比如一次10个左右的元素?与一次发送数百个请求相比,每个请求发送大量数据效率更高,对服务器的压力也更小。特别是如果您想在生产环境中执行此操作,则不应发送太多请求。请记住,每个请求都有诸如 HTTP 标头之类的开销。
标签: javascript ajax spring-mvc extjs extjs4.1