【问题标题】:MVC: Keep alive or make the initial load super fastMVC:保持活动状态或使初始加载超快
【发布时间】:2017-08-25 09:44:19
【问题描述】:

目标是我希望我的整体网站响应时间是即时的。

问题是我没有 IIS 访问权限,我的网站是使用外部服务托管的,我无法控制 IIS 面板。

我现在的方法是使用预定代码来保持我的网站活跃。这种唯一方法的问题是托管服务有一个算法可以每隔几个小时关闭所有托管网站。

这就是为什么我需要实施另一种方法来在每次运行时预热/预加载网站。

在无法访问 IIS 面板时如何执行此操作?

【问题讨论】:

  • 您可以有一些外部应用程序(不在您的主机提供商上),它可以定期请求您的网站。
  • 只需使用已知 URL 访问您的网站即可使其保持活跃。 IIS AppPool 的默认超时为 20 分钟。您可能需要根据他们关闭未使用池的频率来更改期限

标签: c# asp.net asp.net-mvc asp.net-mvc-4 iis


【解决方案1】:

该解决方案需要没有第 3 方网站; robots;apps,您只需自己编写一个非常简单的应用程序,它会定期执行一个微不足道的 Web 功能,也许是 REST GET。通过执行此功能,每隔几分钟说一次,您不仅可以保证 IIS 池不会超时并且对客户端来说很冷,而且还具有确保您的网站在 温暖的条件下启动和运行的良好效果(JIT'd;并且正在运行)准备好为您的非心跳网站请求发出真正的请求。

例如

在您的网站中公开一个 REST API,例如 www.misspiggy.com/api/hiyaaaa,除了返回 HTTP 200 OK 之外什么都不做。

通过在您的 ASP.NET 应用程序中实现这一点,对上述 URL 的任何请求都将导致您停止或冷的 ASP.NET 网站在以下期间被 JIT 处理:

  1. 第一次部署(即使这样也只是在向它发出请求期间)
  2. 在 IIS AppPool 超时并需要按需重启后

发出 REST 请求的客户端代码可以是任何东西:

  • 控制台应用程序
  • Windows 服务
  • WinForms/WPF 应用程序

可以通过 Windows 任务计划程序触发控制台应用程序,例如每 5 分钟触发一次,从而省去在计划程序中构建的麻烦。

我现在的方法是使用预定代码来保持我的网站活跃。这种唯一方法的问题是托管服务有一个算法可以每隔几个小时关闭所有托管网站

我建议您将 ping 周期设置为几分钟而不是几小时。

无需管理员访问服务器

问题是我没有 IIS 访问权限,我的网站是使用外部服务托管的,我无法控制 IIS 面板

需要指出的是,这个解决方案不需要你在服务器上安装任何新东西,也不需要在服务器上做任何改变。

天蓝色

有趣的是,Azure Application Insights 具有 可用性测试,虽然设计用于测试网站可用性,但也可用于保持网站的完全相同的目的为 Web 客户端准备就绪。事实上,这就是我为我的网络应用所做的。

这样做可以尽可能降低响应时间和延迟。

【讨论】:

  • 您能否添加设置应用程序洞察 ping 测试的步骤?
【解决方案2】:

您可以做很多事情,但一个真正简单的解决方案是使用网站监控站点,例如 statuscake 或 uptime robots,其中有很多。您设置它们以设定的时间间隔调用您网站上的一个或多个页面,以确保它仍然正常运行,这具有保持网站温暖的额外好处。

如果你还没有这样做,我也会预编译你的 mvc 应用程序。

HTH

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 2016-03-23
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    • 2022-07-07
    相关资源
    最近更新 更多