【发布时间】:2014-03-28 12:07:16
【问题描述】:
我在云服务上初始加载我的 MVC3 .NET4.5 应用程序时速度非常慢,当然当池每 20 分钟回收一次时。
现在我可以扩展回收,但在我看来,简单地在本地预编译所有内容,然后打包并发布到云服务会是一个更好的解决方案。
如何在本地进行预编译,然后将预编译好的代码打包发布?
谢谢
【问题讨论】:
标签: asp.net-mvc-3 asp.net-mvc-4 azure asp.net-mvc-5 azure-web-roles
我在云服务上初始加载我的 MVC3 .NET4.5 应用程序时速度非常慢,当然当池每 20 分钟回收一次时。
现在我可以扩展回收,但在我看来,简单地在本地预编译所有内容,然后打包并发布到云服务会是一个更好的解决方案。
如何在本地进行预编译,然后将预编译好的代码打包发布?
谢谢
【问题讨论】:
标签: asp.net-mvc-3 asp.net-mvc-4 azure asp.net-mvc-5 azure-web-roles
问题是 Azure SDK 附带的默认 MSBuild 脚本不将预编译结果包含到服务包中。所以预编译应用程序不是问题,但打包预编译结果是一个问题。一种可能的解决方案是就地预编译应用程序,如here 所述。
20 分钟的空闲超时对于 Web 角色来说意义不大,因此值得简单地禁用它。您将面临的下一件事是,在第一个请求到达时启动 Web 应用程序仍然需要一些时间,因为必须从磁盘加载大量代码并进行 JIT 编译,解决方法是使用 IIS 的“预热”功能或者只是从内部角色OnStart() 向“localhost”发送请求。
【讨论】:
OnStart() 的部分非常简单——您可以使用WebRequest 向在同一台机器上运行的IIS 发送HTTP 请求。