MVC:保持活力或使初始负载超快

时间:2017-03-31 07:44:40

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

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

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

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

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

如果无法访问IIS面板,如何执行此操作?

2 个答案:

答案 0 :(得分:5)

该解决方案要求没有第三方网站;机器人; 应用,您自己只是编写一个非常简单的应用程序,定期执行一个简单的Web功能,可能是 REST GET 。通过执行此功能,每隔几分钟,您不仅要保证IIS池不会超时并且对客户端感冒,而且还可以确保您的网站在温暖的条件下启动并运行(JIT'd;并且正在运行)准备好为您的非心跳网站请求提供真实请求。

e.g。

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

通过在ASP.NET应用程序中实现此功能,对上述URL的任何请求都将导致您停止或冷却的ASP.NET网站在以下期间进行JIT:

  1. 首次部署(即使只是在请求期间),
  2. IIS AppPool超时后需要按需重启
  3. 发出REST请求的客户端代码可以是任何内容:

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

    可以通过Windows任务计划程序触发控制台应用程序,每5分钟一次,这样可以节省您在计划程序中构建的麻烦。

      

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

    我建议你将ping时间设置为几分钟而不是几小时。

    无需管理员访问服务器

      

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

    应该指出,此解决方案不要求您在服务器上安装任何新内容,也不要在服务器上进行任何更改。

    天青

    值得注意的是,Azure Application Insights 具有可用性测试,虽然专为测试网站可用性而设计,但可用于保持您网站的完全相同目的活着,温暖准备去网络客户。事实上,这就是我为我的网络应用做的事情。

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

    enter image description here

答案 1 :(得分:0)

你可以做很多事情,但一个真正简单的解决方案是使用网站监控网站,如状态蛋糕或正常运行时机器人,其中有很多。您可以按照设定的时间间隔将它们设置为在您的网站上调用一个或多个页面,以确保它仍处于运行状态,这样可以使网站保持温暖。

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

HTH