我有一个包含 7 个 div 的 html 页面,我使用 ajax 调用加载每个 div,以便并行加载这些卡片。当我从 Controller 端检查时,每个 div StoredProcedure 只需要 100-200 毫秒,而渲染每个 div 则需要接近 2 秒。当我从 Chrome 开发工具中检查时,每个请求都占用了太多等待时间 (TTFB),而且看起来每个 div 都在同步加载,即使我使用以下代码也是如此:
$.when($.ajax({
url: div1Url,
success: function (data) {
$("#div1").html(data);
}
}),
$.ajax({
url: div2Url,
success: function (data) {
$("#div2").html(data);
}
})
//Like this I am loading all divs...
).then(function () {
console.log('loaded');
});
<div id="div1"> Div1</div>
<div id="div2"> Div2</div>
<div id="div3"> Div3</div>
<div id="div4"> Div4</div>
<div id="div5"> Div5</div>
<div id="div6"> Div6</div>
<div id="div7"> Div7</div>
请在下面找到我呈现的 HTML 页面和每个组件的时间线。有人可以建议我如何减少等待时间以实现性能。
PS:我实现了gzip、动态压缩、Expires Headers等,用YSlow工具测试时我的网站Grade是“A”
最佳答案
即使您同时发送 AJAX 请求,如果您使用 session 数据,ASP.NET MVC 也会将它们作为队列处理。
尝试将 [SessionState(SessionStateBehavior.Disabled)]
属性添加到您的 Controller 。
引用这里:ASP.NET MVC 5 concurrent requests are queued even with disabled Session
关于ajax - 如何减少 MVC 应用程序的等待时间 (TTFB),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36326942/