【发布时间】:2017-02-19 22:49:48
【问题描述】:
为了在 MVC5 上的 Razor 视图中支持 C# 6,我们通过 web.config 打开了 Roslyn 编译器平台:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
</compilers>
</system.codedom>
但是,在生产部署之后,每个视图/控制器似乎都有明显的“首次加载”延迟,这比不启用此编译器时更糟。
重要的是,这种延迟是除了您从正在部署的新站点获得的常规 JIT 延迟之外的延迟。页面明显变慢,而 VBCSCompiler.exe 似乎在后台运行以“进一步编译”这些页面。
是否有预编译/优化这种情况以消除部署后首次加载运行时延迟的最佳做法?理想情况下,VBCSCompiler.exe 在部署后不会运行,而是在构建时执行。
我看到过提到 aspnet_compiler.exe 并遇到过 StackExchange.Precompilation(请参阅 https://blog.stackoverflow.com/2015/07/announcing-stackexchange-precompilation/),我想知道这是否是正确的解决方法。
有人对这个特殊问题有任何经验吗?谢谢。
【问题讨论】:
标签: c# asp.net performance razor roslyn