【发布时间】:2021-08-28 10:59:21
【问题描述】:
好的,我认为我有多个 $.ajax。它们都链接到同一个控制器/动作(但具有不同的参数值)。
$("#div1").load(url + "?myParam=1");
$("#div2").load(url + "?myParam=2");
当然,我这样做是为了让它们独立加载,以获得更好的加载时间。
这是我的控制器操作:
public PartialViewResult MyAction(int myParam){
var reader = new Reader(this.ConnectionString);
string output;
switch (myParam)
{
case 1:
Thread.Sleep(15000);
output = reader.Get("One");
case 2:
output = reader.Get("Two")
}
}
看到那边的 Thread.Sleep 了吗? 好吧,我原以为第二个 div 会立即加载,但你猜怎么着,它会等待第一个 div 完成。
读者做了一些 EntityFramework 的东西
public string Get(string input){
using var ctx = new Entities();
return ctx.Something.Where(s => s.Whatever == input).Id;
}
【问题讨论】:
-
这是因为服务器限制了每个客户端的并发连接数,以防止DDOS等攻击。这就是为什么最好发送一个返回所有必要信息的 AJAX 请求,而不是发送大量具有更精细细节的 AJAX 请求。另外,为了清楚起见,我确信这只是测试,在网络服务器上使用
Thread.Sleep()是非常糟糕的做法。 -
您能详细说明一下吗?默认值是什么,我可以从哪里更改它?不过,我怀疑默认设置是每个客户端 1 个连接。我在 IIS(已发布)和 IIS Express(开发)上都有这个问题。
标签: c# jquery asp.net asp.net-mvc