LZ通过了MVC5+EF6搭建了一个网站,但是出现了一个奇怪的问题,当网站的页面第一次访问的时候会很慢,后面几次就会变快。为了弄清楚原因,我找到了MiniProfiler这个插件来检测页面各个模块执行的时间,通过检测结果,可以清楚的看到执行SQL语句是只花了402ms,dom元素的加载都只是占了很小的一部分时间。但是我没看明白的是,总共花去了5738.0ms,其他时间是在哪里花费的?
第一次访问MinProfiler 返回结果
第二次访问访问MinProfiler 返回结果
从原来的5秒一下缩减到100毫秒。
总结下问题:
第一个访问的慢,主要是慢在什么地方?原因是在获取到数据之后的业务处理逻辑上吗?但是为什么第二次又那么快?是因为第二次访问有了缓存吗?
这个不需要动用这个nb的工具了。第一次为什么慢,因为runtime要编译代码。也就是所谓的jit。
如果要改善这种情况。可以对站点预热。
站点预热什么意思?就是先访问下吗?我现在的情况是这样的,程序发布到服务器上之后,第一次访问会比较慢,后面就快了。但是过了一段时间,例如几个小时之后,再去点击页面又变慢了,点了之后又变快
@lampon:
几个小时候后又变慢,是因为几个小时没有访问,iis自动吧进程给回收了。
可以设置回收时间解决这个问题。
多自己google关键词学习。
第一次需要编译,你可以采用预编译的方式发布站点,看是否有所提升。
是这个吗,我勾上发布之后还是一样。PS:我采用的是web Deploy发布
你这个原因有可能是后台做了缓存处理。当数据第一次加载之后,放在缓存当中,如果在限定的时间内访问,直接从缓存中取,所以速度快了很多,当超过限定的时间之后,缓存被释放掉了,所以速度又慢了。