如何多线程加载部分视图?

时间:2013-05-08 14:00:40

标签: jquery asp.net-mvc asp.net-mvc-4 razor

我有一个仪表板视图,可以加载几个独立的局部视图。每个局部视图需要大约四分之一秒才能加载(是的,它们可能会被优化),但是我想找到一种方法来多线程加载这些局部视图以使加载更快。

现在,为了快速渲染屏幕,我们首先加载一个简单的视图,每个部分视图/小部件都有一个<div id="myWidget">部分,我们在其中填写“正在加载数据... “然后,在每个局部视图的javascript中,我们进行另一个jQuery调用来加载相关数据。当它返回时,我们用部分视图替换原来的myWidget范围。

我希望所有这些小部件并行工作。你是怎么做到的?

2 个答案:

答案 0 :(得分:0)

您可以尝试进行单个ajax调用,然后为所有小部件准备数据。在操作方法中,使Async调用以并行准备数据。请参阅http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4#SampleApp

然后传递所有数据以作为模型进行查看,使用不同的部分视图来呈现每个小部件并将mashup视图作为响应返回。

在客户端,在ajax调用成功时,将整个仪表板/窗口小部件区域替换为您收到的数据作为响应。

答案 1 :(得分:0)

您的设置问题是浏览器只能同时对同一个Web服务器进行这么多的同时调用。因此,虽然您可以同时创建大量的ajax请求,但通常只有2-10(取决于浏览器,操作系统)将一次处于活动状态。其余的人坐在队列中,直到其他人完成。

我个人认为您现在通过初始ajax请求加载的所有数据都应该由第一个请求(加载页面的请求,而不是第一个ajax请求)预先加载。然后,客户端的任何更新都可以单独完成。