原因
根据网上的资料,第一次加载慢的原因大概有以下几种:
- ASP.NET 默认是动态编译的,第一次时间都浪费在编译加载上了。
- 第一次运行需要验证数字签名。
- Entity Framework初始化造成的。在首次使用时,Entity Framework会根据数据库中的信息在内存生成一个映射视图(mapping views),操作非常耗时。
解决方案
目前还没有一个统一的,解决方案,具体的可以尝试以下几种方案:
- 预编译,参考ASP.NET 网站预编译概述。
- 去掉数字签名,参考关于asp.net程序第一次运行速度慢的问题解决办法。
- 使用“预加载模块”,参考IIS 8.0 Application Initialization。
参考资料
- http://www.allytel.com/_app_data/news/2013/news_20130818_121818.aspx
- http://q.cnblogs.com/q/59572/
- http://q.cnblogs.com/q/45228/
-
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization (IIS 8)
a. 安装预加载模块
b. 应用程序池-高级设置-启动模式:AlwaysRunning
c. 应用程序池-高级设置-进程模型-闲置超时:1740 (分钟)
d. 应用程序-高级设置-常规-预加载已启用:True - http://www.cnblogs.com/shanyou/archive/2010/12/21/1913199.html (IIS 7.5)
- http://www.cnblogs.com/chehaoj/p/3432100.html (IIS 7.5)
- http://blog.csdn.net/rnhhb/article/details/46625097 (IIS 7.5)
- http://blog.hackroad.com/operations-engineer/windows_server/2633.html (IIS 7.5)
- http://www.cnblogs.com/wangjinsns/p/4015762.html?utm_source=tuicool&utm_medium=referral (ServiceAutoStartProvider)
- http://www.cnblogs.com/dudu/p/entity-framework-warm-up.html (Entity Framework)
注
经本人测试,方案1和方案2,对于.NET 4.5 IIS8 已经无效,使用方案3解决此问题。