有没有办法让webjpy中的ajax调用似乎按顺序启动?

时间:2016-05-06 21:16:44

标签: ajax web2py

我正在开发一个SPA,发现自己需要在加载某些部分时启动几个(5-10 +)ajax调用。使用web2py,似乎很多人都在等待其他人完成或接近完成以获取任何数据。

以下是Chrome的一些时间轴输出

的示例

example

绿色表示等待时间,灰色表示时间停滞,透明表示排队时间,蓝色表示实际接收内容。

这些都是通过web2py控制器的请求,大多数只是做一个简单的操作(通常是数据库查询)。访问静态资源的任何东西都可以快速处理。

为了记录,我正在使用cookie中的会话,因为我读过基于文件的会话如何强迫web2py进行类似的行为。我也在任何不修改会话的控制器的顶部调用session.forget()。

我知道我可以并且我打算通过减少ajax调用的数量来优化它,但我发现这种行为很奇怪而且不受欢迎。还有什么可以改善这种情况吗?

1 个答案:

答案 0 :(得分:0)

如果您使用基于cookie的会话,则请求不会被序列化。但请注意,浏览器会限制同一主机的并发连接数。查看时间轴输出,确实看起来确实同时发出了一组请求,但Chrome不会同时发出所有21个请求。

如果您无法减少请求数量但必须同时进行,请查看here或配置您的网络服务器以使用domain sharding

另外,在web2py中,如果您使用基于文件的会话并希望在给定请求中解锁会话文件以防止请求序列化,则必须使用session.forget(response)而不是{{1 (后者阻止会话保存,即使它已被更改,但它不会立即解锁文件)。在任何情况下,如果您使用基于cookie的会话,则没有要解锁的会话文件。