当我第一次访问我的ASP.NET MVC网站的任何页面时,第一个请求很慢.加载需要大约4-5秒.但是,对任何页面的每个后续请求都很快.
当我等待几分钟或一小时后,每次第一次请求再次变慢.以下每个请求都很快.
我认为IIS 7正在编译代码并将其保存在内存中.一段时间后,它会将其从内存中删除,因此需要再次编译.
每次第一次请求时,我能做的是和以下每个请求一样快吗?(如果可能的话,不预编译我的源代码)
非常感谢你提前!
如果这是一个生产服务器,那么为什么不尝试添加一个网站监视器; 比如上行机器人.它基本上要求您的网站标题,并每隔5分钟获取"200-ok","404-not found"等状态代码.这样,您的站点始终会启动,并且不会影响日志文件/分析,因为只需要标头.我将它用于我的云站点,因为我发现它们需要5秒才能启动,这会对站点加载产生影响.使用显示器,它们是即时的.
哦,它可以免费使用多达50个网站!
这可能是应用程序池上的回收工作进程设置,检查其值并将其关闭或使其更长.
也可以是在应用程序池的性能空闲后关闭工作进程.
它可能是第二个默认为20分钟,第一个默认为29小时我相信.
这几乎可以肯定是您的应用程序池空闲超时设置(而不是您的代码被重新编译).
IIS中的默认应用程序池空闲超时为20分钟.这意味着,如果20分钟过去且没有请求进入您的应用程序,IIS将关闭您的应用程序池的工作进程,使您的应用程序再次"冷".当IIS重新启动工作进程并"加热"您的应用程序备份时,发出下一个请求的人将等待几秒钟.
如果您不希望IIS在一段时间不活动后自动"冷却"您的应用程序,则可以通过将其设置为0来禁用应用程序池空闲超时.