这篇文章多半算是转载吧,
我也是看了
http://personball.com/orm/2014/09/18/entity-framework-6-optimization-ultimate-version/
http://www.lanhusoft.com/Article/127.html
这两篇文章,才学习到的解决方法, 这两篇文章内容基本一致,我就总结一下具体的使用方法吧
我的环境: 阿里云 ESC, Windows 2008R2 ,4核 16G ,MySQL 5.6
使用的技术: MVC4, EF6, Unity, WCF
大概有5个应用, 都是用的这种框架, 所以用户第一次登录的时候,可能需要1分多钟(.....这个慢被我体现到了极致), 而且这一分钟其他用户也登录不上
好了,不解决这个问题,老板是要杀头的...我之前想过用Windows 服务去访问激活
1.是要访问Web(并且是带数据库访问的)
2.是要访问WCF(并且是带数据库访问的)
但做了一半,觉得有点恶性, EF都6了,还这么土吗? 就google 了一下看有没有相关的技术文章,果然被我挖掘到了, 我只挑选的看了上面介绍的两篇, 感觉能解决我的问题,便开始操刀了.
- 安装Application Initialization
2. 用Ngen安装生成EF的本地镜像
3, 禁用第一次ef查询对表__MigrationHistory的问题
注意: 这步我看用EF Power Tool生成的 CodeFirst 都有这句静态构造函数的, 但依然执行了合并检查SQL
4.EF Pre-Generated Mapping Views(预生成映射视图)
注意: 这里两篇文章都建议我们写到 Application_Start 里面, 但我试过了, 做了这些设置后, 其实 w3wp进程的确是存在,但根本没有激活Application_start方法, 好在stackoverflow上解决了这个问题, 其实就是要在第1步的时候, 同时在WebSite选项卡中勾选对应程序的 Reload 选项.
http://stackoverflow.com/questions/13823998/call-to-application-start-after-starting-application-pool-in-iis
5.IIS 应用程序池闲置超时时间增加到了1440 一天
具体方法细节见http://www.lanhusoft.com/Article/127.html.