使用MVC5+EF6的网站,怎么让网站第一次打开速度从20秒降到2秒
终于下定决心去搞定这个问题,每次网站刚发布或者IIS线程回收以后网站第一次打开速度真是惨不忍睹,10秒起步。
例如:
第一次发布是这样的:
线程回收以后是这样的:
查了好多资料,大概说了4中解决方案:
1、增加IIS回收线程池的时间:
然而迟早还是要回收的。。。
2、Application Initialization:
这是在iis8出来后才有的,iis8内置的功能,而对于iis7.5也提供了一个扩展以支持这个功能
http://pan.baidu.com/s/1dDRgRF7
软件在这里,安装以后,在IIS中会有一个这玩意儿:
然后配置配置,我觉得没什么卵用的感觉。
3、博客园dudu大神说的给ef预热,就是这段代码:
using (var dbcontext = new CtDbContext()) { var objectContext = ((IObjectContextAdapter)dbcontext).ObjectContext; var mappingCollection = (StorageMappingItemCollection)objectContext.MetadataWorkspace.GetItemCollection(DataSpace.CSSpace); mappingCollection.GenerateViews(new List<EdmSchemaError>()); }
为什么我也感觉没什么卵用????
4、大招:NGen,本地代码镜像
好吧,还是这个屌。大概就是缓存DLL吧,
在命令行中定位到C:\Windows\Microsoft.NET\Framework64\v4.0.30319。因为Ngen.exe存放在这里,如果不定位,Ngen.exe无法正确定执行。
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
2)生成本机本机映像。
ngen install D:\Cartoon\Mobile\bin\Cartoon.Mobile.dll (备注:Dll方式)
ngen install xxxxxxxxxxxxxxxxxxxxxxxxxxxx.exe (备注:exe方式)
3)卸载本机本机映像,请使用与安装时相同的命令行选项。
ngen uninstall D:\Cartoon\Mobile\bin\Cartoon.Mobile.dll
好了废话到这里,看最终的效果,第一次执行哦:
2秒基本能接收了,如果不是第一次的话,速度是这样的:

浙公网安备 33010602011771号