【问题标题】:Initial load of ALL pages slow after build构建后所有页面的初始加载速度变慢
【发布时间】:2016-01-15 15:00:08
【问题描述】:

在构建 MVC Web 应用程序后,我习惯于在访问第一个网页时遇到缓慢的加载时间,我知道为什么会发生这种情况,但我也注意到 加载时间是每个网页的初始访问速度都很慢

例如,以下是我的主页在各种条件下的加载时间。主页不进行任何数据库调用:

  • 构建项目并加载希望页面(第一个网站点击和第一个主页点击):10.31 秒(预期)
  • 构建项目,加载联系人页面(第一个网站点击),然后加载主页(第一个主页点击):757 毫秒(非预期)
  • 主页的所有后续加载时间(第 2 次、第 3 次、第 4 次等主页点击):4 毫秒(预期)

我已经为所有网页复制了这些相同的结果,而不仅仅是主页。即,如果您将“主页”替换为“关于我们的页面”,将“联系页面”替换为“常见问题页面”,加载时间将与上述几乎完全相同。

这些数字是针对我本地环境的,如果我将我的项目推到生产环境,它们会暴涨,每个页面的初始加载都是几十秒。

有趣的是,我只记得几天前开始发生的事情。在过去的几个月里,据我所知,初始网站加载总是很慢,但在那之后,所有页面在初始加载时都会加载得非常快。

是什么导致每个页面的初始加载时间缓慢?

【问题讨论】:

  • 你在 IIS 上部署吗?
  • 是的,我在 IIS 上进行部署。还可以在 https 上运行该网站,以实现其价值。
  • 每次部署时,应用程序池都会被回收并需要重新启动。也许在您页面的初始加载时,它们会被缓存,因此后续调用会更快。
  • 你找到答案了吗?我也有同样的情况。
  • @Matt,我做了一个简单的爬虫来“预热”网站。这只是我在推出之后手动运行的 c# 代码,在网站重新上线之前,它会遍历网站目录并在浏览器中打开每个页面。这是一种痛苦,但它有效。我被锁定使用 IIS 7,因为我无法独立于操作系统升级它,但 IIS 8 中的应用程序初始化功能可能会解决这个问题。因此,如果您没有 IIS 8,我会说编写一个自定义爬虫,如果您有 IIS 8,请查看应用程序初始化功能 - 有兴趣了解它是否有效。

标签: c# asp.net-mvc iis-7 visual-studio-2015 asp.net-4.5


【解决方案1】:

应用程序池需要时间来构建库,然后才能开始处理它们。这可以通过使用某种脚本来加速。它还取决于您使用的是网站还是 Web 应用程序项目。每个页面的网站第一次点击都很慢,每个新页面点击都有额外的编译时间。预编译的 Web 应用程序项目应该会快一点,但仍然需要加载库。您拥有的库和工具越多,这种打击就越严重。

您也可以寻找 IIS 自动启动功能 并在您的服务器上设置它可能有助于加快进程。默认情况下,应用程序池在用户不活动的情况下关闭,默认值为 1740 分钟。您还可以通过设置为 0禁用空闲 TimeOut,这会很有帮助。

我最好的选择是使用应用程序初始化插件来获得更好的性能 http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization

【讨论】:

    【解决方案2】:

    它发生在我将项目从 VS2017 移动到 VS2019 之后。我发现了我猜的问题。每个页面在首次访问时编译一次。检查发布选项。您将看到一个选项“在发布期间预编译”启用此选项。删除 BIN 和 WIEWS 文件夹。从发布位置复制文件夹(不要覆盖)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      相关资源
      最近更新 更多