【发布时间】:2013-01-23 09:16:14
【问题描述】:
当我的一个“长”响应以某种方式阻止另一个 AJAX 请求时,我遇到了不愉快的情况。 我同时调用 3 个不同的资源:
var list = ['/api/filters','/api/criteria/brands','/api/criteria/genders']
list.forEach(function(item){$.post(item)})
在服务器端,我可以在日志文件中看到以下时间:
GET /api/filters 304 51ms
GET /api/criteria/genders 200 1ms
GET /api/criteria/brands 200 0ms
这对我来说看起来很酷,但在浏览器中图片完全不同。
picture with google chrome network tab
所以看起来浏览器首先等待答案(长请求),然后才收到最后 2 个结果。
这种行为的原因可能是什么?
【问题讨论】:
-
50 毫秒以下的速度非常快,这有什么问题,可能只是您的网络
-
这在带有 SSD 的本地机器上,因此实时延迟会“有点”更长。实际上 51ms 只是输出响应大约 300kb 先前缓存在内存中的 JSON(没有任何计算、数据库请求等)
-
你为什么不把它放在一个真实的网络环境中,(AWS,Heroku),以确保你没有为幽灵优化
标签: javascript ajax node.js express blocking