MVC在编辑后第一次返回PartialView缓慢

时间:2017-08-22 10:27:08

标签: ajax asp.net-mvc view controller

我想这个问题的答案与缓存相关,但为了更好地理解我认为我至少会问的原因。

在我的MVC项目中,我正在向控制器发出一个AJAX请求,以返回一个html页面作为局部视图,然后我将html注入到页面中。原因是视图的变化模型取决于所点击的内容。

以下是AJAX :(请注意,为简单起见,所有代码都已修改)

$.ajax({
    type: 'GET',
    url: "../../Home/NewMembershipAlloc/",
    contentType: 'application/json',
    dataType: 'html',
    success: function (data) {
        $('#partial_div').html(data);
    }
});

这是控制器方法:

public async Task<ActionResult> NewMembershipAlloc()
{
    return PartialView("~/Views/Popup/GenericPopup.cshtml", new Membership());
}

现在,为了清楚起见,这一切都按预期运作。几乎每次我运行这段代码大概需要20ms,如下所示: enter image description here

然而,如果我以任何方式编辑我的html页面,即使我只删除一个字符然后重新添加它。下次我执行请求时需要2秒钟(ish) )。

enter image description here

所以这发生在我的开发环境中,这应该是我的html编辑的唯一地方。刷新页面,清除缓存或打开新浏览器时,会发生。所以我的问题如下:

  1. 发生这种情况的全部原因是什么?
  2. 我可以阻止它第一次变慢吗?或者是我为加载新的html付出的代价?
  3. 这种延迟会在发布后发生吗?如果某人有几天没有使用该网页,可能会关闭他们的机器。

1 个答案:

答案 0 :(得分:1)

看起来类似于这个问题:

https://stackoverflow.com/a/25006809/6862867

参考上述链接:

第一次请求新视图或编辑视图时,服务器将解析并编译代码。这需要花费很少的时间(但是比您期望的页面加载时间长)并且每次页面更改时只需要一次。我怀疑你看到它的原因即使你删除一个字符然后重新添加它是因为服务器无法识别已经改变的内容,直到解析/编译时间,因为文件自上次加载以来已经改变。

您似乎可以在发布时预编译您的项目,虽然我不清楚自己是如何完成/工作的。

发布后,它只会在第一次加载页面时发生。你可以在发布后立即自己提出这个请求。

希望这有帮助:)