我对asp.net mvc (4.7.2)和asp.net核心mvc (2.2)之间的异常情况非常好奇。
我所做的是:
创建空的asp.net mvc项目,添加从默认的"HomeController“中克隆的新"TestController”,复制主控制器的视图,并将视图目录命名为“测试”。
在asp.net核心mvc项目上做同样的事情。
运行asp.net mvc项目并更改url /Test/Index (视图与Home/Index完全相同),第一次运行大约需要300 as。如果刷新页面,运行时间为5-6毫秒。
我在asp.net核心mvc项目上做的完全一样,每次刷新的时候都要花费30 ms的时间和5-6 ms的时间。
我测试了几个案例,我认为这都是关于“第一次创建X型控制器”。
我在asp.net工作了5-6年,但我现在注意到了这一点。你可以说这没有问题,只有300毫秒,但在资源不足的机器上,它需要大约30秒。
这是怎么回事?我怎么才能把这个时间减少到asp.net核心时间(~30 is )?
编辑:--原来它与创建控制器无关。是关于视图目录的。我将TestController视图路径的索引操作更改为"~/Views/Home/ Index“,它打开得很快(如果我以前从这个文件夹呈现了任何视图),但是如果我”第一次从X目录(或子目录)呈现视图,它的工作速度就像我前面提到的那样缓慢“。
我认为这一切都是关于编译视图(或视图目录)。但我还没弄明白。
因此,如果我将所有视图文件移动到同一个目录,这种情况永远不会发生。但这将是非常混乱和不正确的做法。
发布于 2019-11-18 07:17:02
我终于想出来了。这都是关于在启动应用程序时编译视图(而不是在运行时)。
以及它加速了你的网站(特别是如果你有太多的浏览量)
解决方案:
*.csproj"
将此代码<Target Name="BeforeBuild"> <!-- Remove obj folder --> <RemoveDir Directories="$(BaseIntermediateOutputPath)" /> <!-- Remove bin folder --> <RemoveDir Directories="$(BaseOutputPath)" /> </Target>
siteId = "1";//您可以从applicationhost.config var appVirtualDir = $"/LM/W3SVC/{siteId}/ROOT";var clientBuildManager =新ClientBuildManager(appVirtualDir,null,new ClientBuildManagerParameter { PrecompilationFlags = PrecompilationFlags.Default,});clientBuildManager.PrecompileApplication();
https://stackoverflow.com/questions/58900538
复制相似问题