Ger*_*ben 2 asp.net-mvc jit compilation ngen asp-classic
在更新后使用我们的MVC Web应用程序时,首次加载主页需要几分钟时间.第一次加载后,加载速度非常快.可能MSIL代码被编译为Native Machine代码并被缓存.(如我错了请纠正我).每个页面都会出现这种情况.
每次将新版本复制到服务器时都会非常慢.为了解决这个问题,我试图用ngen进行pre-jit编译,这样我们就可以为用户节省大量时间.但是当对它的项目bin文件夹中的每个dll执行"ngen install mydll.dll"时,它会给我带来一些错误.这是命令
cd "C:\Windows\Microsoft.NET\Framework64\v4.0.30319"
for %%i in (C:\inetpub\wwwroot\myproject\bin\*.dll) do ngen install "%%i"
第一个错误是:
Failed to load dependency System.Web.Mvc of assembly DotNetOpenAuth.Core, 
Version=4.3.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246 because of the following error : The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Failed to load dependency log4net of assembly DotNetOpenAuth.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=2780ccd10d57b246 because of the following error : The system cannot find the file specified. (Exception from  HRESULT: 0x80070002)
该项目只是调试和构建良好.实现这一目标的正确方法是什么?
您必须预热Web应用程序的初始化.这将首次加快主页的负荷.为您提供简要的概念概述:
1)在向网站发出第一个请求之前,不会生成工作进程.工作进程与应用程序池关联.当进程启动网站时,工作进程的产生可以是时间进程.所以第一步是提前生成工作进程(w3wp.exe).这可以在应用程序池级别完成
2)第一次请求到网站; 工作进程加载所有应用程序DLL以执行请求.这个加载dll的过程可能需要时间.此外,当回收App Pool时,工作进程必须再次重新加载所有应用程序dll.所以第二步是通过工作进程预加载dll.这可以在网站级别完成.
应用程序预热模块是IIS 8.0中的内置功能.
请按照以下链接在IIS中预热您的Web应用程序:
http://blogs.msdn.com/b/amol/archive/2013/01/25/application-initialization-ui-for-iis-7-5.aspx
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization
| 归档时间: | 
 | 
| 查看次数: | 2580 次 | 
| 最近记录: |