【问题标题】:MVC return PartialView slow first time after editMVC 编辑后第一次返回 PartialView 慢
【发布时间】:2017-08-22 10:27:07
【问题描述】:

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

在我的 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());
}

现在,为了清楚起见,这一切都按预期工作。几乎每次我运行这段代码都需要 20 毫秒,如下所示:

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

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

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

【问题讨论】:

    标签: ajax asp.net-mvc view controller


    【解决方案1】:

    看起来类似于这个问题:

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

    参考以上链接:

    第一次请求新的或编辑过的视图时,服务器将解析和编译代码。这需要少量时间(但比您预期的页面加载时间要长),并且每次页面更改时只需要一次。我怀疑即使您删除一个字符然后将其重新添加,您看到它的原因是服务器直到解析/编译时才识别出发生了什么变化,只有文件自上次加载以来发生了变化。

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

    发布后它只会在该页面第一次加载时发生。您可以通过在发布后立即提出该请求来解决此问题。

    希望这会有所帮助:)

    【讨论】:

    • 这没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker。 - From Review
    • 我的道歉,我认为它确实回答了这个问题,因为问题询问为什么第一次编辑的视图需要更长的时间才能加载,而我引用的问题解释说这是由于页面在第一次被请求时被编译。我很欣赏回复所花费的时间,但我不清楚为什么这是一个不正确的答案。我应该在我的答案中总结链接的答案吗?我正在努力在这个社区中发挥更大的作用,并希望得到指导。
    • 编辑了我的答案以便更有帮助(希望如此)
    猜你喜欢
    • 1970-01-01
    • 2022-08-04
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多