asp.net-mvc - 我已经编译了项目代码和 View ,但应用程序池刷新后仍然等待很长时间

标签 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 azure

现在这可能是一个简单的问题,但我有点困惑。

我将 MVC3 C# .NET Web 应用程序发布到 IIS 文件夹。我选择了预编译选项并取消选中“允许站点可更新”以确保 View 被编译,并且它们被编译到 bin ie 中的“.compiled”文件:

_createoredit.cshtml.1c32bb75.compiled

“cs”文件被编译到主项目dll中。

myApp.dll

第一次调用时,页面可能需要 30 - 60 秒才能加载,然后< 1 秒

如果我刷新应用程序池,页面会再次花费 30-60 秒。

我目前的理解是,这个时间延迟是由于将dll中的字节码编译成二进制代码时的抖动导致的?

我曾希望通过预编译 View 来显着增加应用程序池刷新后的响应时间。然而事实并非如此,但这也许是因为我的项目文件是字节码,并且我需要对其做更多的事情?

我确实知道您可以通过重新发送网站来保持网络应用程序的温暖,但现实是应用程序池确实会因为奇怪的原因而刷新。我也在使用Azure。因此,我真的很想使用刷新后尽快运行的已部署代码单元。

提前非常感谢您的帮助。

编辑

使用共享或标准实例预编译 View 并部署到 Azure 网站后,我仍然遇到初始加载延迟,这是由我故意通过重新保存 Web.config 导致的 AppPool 刷新引起的。老实说,我没有看到预编译 View 有任何显着的好处,因为当 .NET 似乎在第一次加载时进一步编译“.compiled” View 时,我仍然会受到时间损失。

编辑2

更多信息请引用@Yishal 的帖子。

我在开发中使用Basic,在测试中使用标准。我启用了“始终开启”,这实际上是自动调整。我还有“Uptime-robot”自动检测功能。我还测试了一个单独的共享站点,其中所有 View 均已预编译。自动 ping 有助于保持应用程序池正常运行。但是,如果应用程序池刷新,即通过 web.config 重新保存(用于测试),那么人们将再次经历漫长的初始等待。对于同一页面,最长可达一分钟,然后 < 1 秒。我唯一的想法是,project.dll(.net p 代码)需要大约 60 秒才能编译为二进制文件并保存在 RAM 中。

最佳答案

如果您使用免费套餐的网站,这是正常的。如果您不同意,请告诉我,我们可以进一步研究。

另请注意,预编译 View 对您的场景的启动时间没有任何帮助,特别是当您尝试使用单个页面时。这个单一页面将被即时编译,并且成本相当小。

关于asp.net-mvc - 我已经编译了项目代码和 View ,但应用程序池刷新后仍然等待很长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23377933/

相关文章:

c# - 在 AppHarbor 上使用 MailGun 发送电子邮件

c# - ASP MVC 中的动态验证

unit-testing - 如何使用最小起订量生成虚假数据进行单元测试?

c# - razor 如何将字节 [8] 转换为字符串?

asp.net - ASP.NET MVC 5 中的基本身份验证

asp.net-mvc - 使用 MVC 4 和 Entity Framework 填充 DropDownList

c# - asp.net mvc c# 中 checkboxfor & model 的用法

asp.net-mvc - 将 CSS 添加到 View 或部分 View

javascript - 在html文档中保存javascript对象的实例

c# - 如何动态更改mvc3中标签的可见性?