编译的MVC视图仍然在第一次请求时缓慢渲染

Tod*_*ter 6 asp.net-mvc

我有一个MVC 5.x应用程序,它的视图已经预编译并合并到一个程序集中.即使在所有这一切之后,AppDomain启动后对视图的第一个请求很慢,但请求哪个视图并不重要,因为它们在第一次请求视图时都很慢.使用MiniProfiler我可以看到它是视图上的"渲染"时间,占用了大部分时间,并且在对视图的额外请求时,渲染时间减少了大约90%.所以要明确的是,这是第一次渲染,正在占用时间.由于事实上所有观点都已经预编译,我不认为这有点慢,我不相信JIT会导致这种大幅减速......任何人都有任何猜测或见解?

请注意,这不是Web应用程序的第一个请求,这是特定视图/页面的第一个请求.例如,对于下面的测试,应用程序已经运行了几个小时并且不断地接受请求,但测试捕获了第一个请求此视图.

第一次请求

捕获MiniProfiler

第二个请求

在此输入图像描述

Ale*_*tov 0

奇怪的!然而,为了 100% 确定到底发生了什么,我会执行以下操作:

  1. 我将重定向运行时编译(是的,将会有一个,因为至少需要编译 Global.asax),如下所示:

    <system.web>
        <compilation debug="true" targetFramework="4.5" tempDirectory="c:\temp\asp.net" />
        ...
    </system.web>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 我将在第一次运行之前和之后调查该文件夹的内容。也许拥有一份原件的副本会更好。

从您对问题的描述来看,似乎一切都应该很好,并且运行之间不会有任何差异。仍然比较前后文件夹的内容可能会发现一些差异。

另一个原因可能是一些缓存,但我猜你已经解决了这个问题。