Mri*_*jay 0 azure azure-web-roles
我正在开发windows azure云服务.第一次点击登录按钮需要6到7秒,但是有一段时间我点击相同的登录按钮需要2秒钟.我无法理解为什么会发生这种情况,所以虽然服务器端代码对于两个处理都相同,但后续调用比第一次调用更安静?
ASP.NET应用程序中"首次出现"延迟非常常见.存在JIT编译的开销,并且可能无法初始化各种"池"(数据库连接,线程等).如果您有一个ASP.NET Web窗体应用程序,则每次访问时都会编译每个.aspx页面,而不是在服务器启动时编译.此外,在第一次命中时,不会初始化使后续请求更快的各种缓存机制(服务器或客户端).在第一次点击时,将运行Application_Start中的任何代码,设置路由表并进行任何其他初始化.
您可以采取各种措施来防止用户看到此延迟.最简单的是编写某种自动化流程,在部署新版本后点击每个页面并运行它.当实际部署站点时,还有一些IIS模块将在Application_Start之前运行代码.搜索"ASP.NET warmup"以查找它们.
如果您的ASP.NET应用程序池被回收,您可能会在一段时间不活动后遇到延迟 - 这会重置一堆内容并导致启动代码在下一个请求时再次运行.您可以通过设置某些内容来频繁ping您站点上的页面来改善此效果,这样,如果应用程序池被回收,它将自动再次预热,而不是在下一个实际用户请求上.使用正常运行时间监视服务将适用于此,或Azure生态系统本身内的计划任务.