通过ajax减慢加载mvc部分视图

时间:2013-01-11 10:13:30

标签: javascript asp.net html ajax asynchronous

我们遇到了一个轻微的问题,即通过Ajax加载多个部分视图,我无法缩小范围。

该页面在点击按钮时加载了6个部分视图。

我们最初是由服务器在单个页面上呈现部分视图,但这意味着处理是串行运行的,并且页面没有很快返回。

所以我创建了一些可运行的javascript和异步ajax请求来刷新它们(请注意,部分视图url会在标记中呈现,以便暂时更容易实现)。

function refreshAllPartials() {
    $('div.partial').each(function () {
        var partialView = $(this);
        var partialViewUrl = $(partialView).attr('partialUrl');
        var parent = $(partialView).parent();
        $(parent).empty();
        $.ajax({
            url: partialViewUrl,
            type: "GET",
            async: true,
            success: function (response, textStatus, jqXHR) {
                $(parent).html(response);
            }
        });
    });
}

现在,问题在于虽然每个部分视图请求返回大约0.7秒(使用Fiddler检查),但Firebug的输出显示了一些不同的东西。

Firebug output

fiddler的输出在几毫秒内保持一致,但是firebug输出和对用户的视觉效果似乎在不断变化。

我猜我有一些关于javascript如何工作以及渲染如何工作的遗漏,但也许我只是做错了什么?

我正在使用ASP.NET MVC3,但是,我不确定它是否相关,因为Fiddler表明IIS正在及时返回数据。

1 个答案:

答案 0 :(得分:1)

此问题是控制器操作未标记为仅需要对会话状态的读访问权。

ASP.NET中的SessionState有一个“功能”,只有1个请求可以对会话进行独占访问,然后所有其他请求都在其后面“排队”。

我需要做的就是将不需要对会话的写访问权限的操作方法分离到另一个控制器并添加:

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)]

作为新控制器的属性。

中提琴,非常高效的网站,非常活泼。