IIS 预加载提高webapi 性能 解决因应用程序池回收导致ASP.Net第一次访问慢,间隔一段时间后,又访问慢的问题

  1. 原理说明:
    IIS应用初始化会在网站第一次创建后或者对应网站的应用程序池回收后,自动开启新程序池,并启动网站初始化,模拟一次正常请求,使网站一直处于在线状态。

  2. 配置说明:

    (1)设置启用应用程序池(AlwaysRunning):保证应用程序池在第一次创建或者被回收后,能自动再次重启运行。

    (2)设置启用网站程序预加载(true):保证程序池在启动过后,网站能响应预加载动作。

    (3)配置网站默认预加载路径:保证程序在程序池启动后,网站预加载过程中,能快速编译程序并进驻内存,保证请求快速响应。

本文以IIS8.5,Windows Server 2012R2做为案例

  1. 安装IIS应用程序初始化功能
    如下图:
  2. 设置应用程序池 启动模式为“Always runing”
    如下图,操作方法:应用程序池 -> 选中网站对应程序池 -> 点击高级设置 ->设置启动模式为 AlwaysRunning
  3. 设置网站预加载
    如下图: 操作方法:选中网站 ->点击高级设置->设置预加载已启用为True 。
  4. 设置配置编辑器,设置默认预加载请求
    打开配置编辑器,如下图:

    在左上角配置节点选择system.webServer/applicationInitialization,其他配置如红圈中 ,如下图:

    在集合中添加一个初始化请求地址(用于IIS初始化默认请求地址),添加完成后,点击配置界面右侧的”应用“按钮,并重启应用程序池和网站,如下图:




    还可以在 Web.config 配置文件中设置以上属性:
     <system.webServer>       
         <applicationInitialization doAppInitAfterRestart="true">
                <add initializationPage="api/UsersManage/Login?username=×××××q&amp;password=111" hostName="http://localhost:2002/" />
         </applicationInitialization>
     </system.webServer>

     

  5.  备注:此流程可以借助第三方工具或者服务模拟网站请求达到相同目的

       参考:Application Initialization <applicationInitialization>

转自https://my.oschina.net/u/267603/blog/3191151

posted @ 2021-01-26 15:41  herry507  阅读(810)  评论(0编辑  收藏  举报