首页 新闻 赞助 找找看

asp.net mvc网站回收后第一次运行奇慢,大家是怎么解决的?

0
悬赏园豆:15 [已解决问题] 解决于 2014-02-19 11:13

有人说是razor文件预编译影响了这个时间,个人没有完全去证实(使用RazorGenerate或者其他可以事先编译razor文件,规避预编译)。

目前有几个预想的解决方案,看看大家有没有更好更优雅的办法呢?

1.使用RazorGenerate编译Razor文件,这个弊端一是所有cshtml文件都要去修改属性配置,不知道还有没有其他需要改动的,嫌麻烦,而且不知道是不是团队里所有人都得装这个东西。弊端二是把修改即可见的路子堵死了。

2.修改固定回收时间和进程空闲超时时间都为43200(分钟),也就是30天。这样的话30天才有一个人中彩,总比天天有人中彩好多了(原来是29个小时回收一次)。但是不知道服务器扛不扛得住。

3.方案2的衍生版,固定回收时间设置为0,人为去回收,之后自己去访问一次。

4.第一次奇慢,之后速度特别快,也就是说第一次做了之后访问没有做的事(预编译?)。能不能把这个动作找到,在每次回收/进程消亡/32%@#$(也就是系统进行了某些动作,会产生预编译行为,在进行这些动作之后紧接着我们先把这个预编译给做了)。不知是否有人实现过这类配置。

5.简单暴力,固定回收时间设置为默认的1720,也就是29小时,同时写一个windows服务每隔一段时间去请求一次网站。自己把坑踩了。

空葫芦的主页 空葫芦 | 初学一级 | 园豆:9
提问于:2014-02-18 23:14
< >
分享
最佳答案
0

如果是动态编译的原因,可以通过aspnet_compiler进行预编译,参考:关于ASP.NET预编译

一些组件的初始化也会造成第1次访问速度慢,比如Entity Framework初始化就要8~9秒。

要真正解决问题,需要使用IIS的应用程序初始化特性(Application Initialization)。

收获园豆:15
dudu | 高人七级 |园豆:31075 | 2014-02-19 09:07

原来是个扩展,是只对IIS7.5和更高级的版本有效吗

空葫芦 | 园豆:9 (初学一级) | 2014-02-19 09:48

在win server 2012服务器上,IIS8默认有这个功能项,勾选以后点击站点/虚拟目录,在应用程序高级设置中-proloadEnabled选为true即可?

 

IIS8测试成功,IIS7.5上面发现装了那个扩展以后还是没有看到预加载这个项,在windows功能里面也找不到“应用程序初始化”这一项。

空葫芦 | 园豆:9 (初学一级) | 2014-02-19 10:47

@空葫芦: 推荐一篇文章:IIS 8.0 Application Initialization

dudu | 园豆:31075 (高人七级) | 2014-02-19 11:24

@dudu: thx村长!

空葫芦 | 园豆:9 (初学一级) | 2014-02-19 11:42
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册