![IIS7 在 AppPool 不可用时对其进行预热](https://linux22.com/image/555175/IIS7%20%E5%9C%A8%20AppPool%20%E4%B8%8D%E5%8F%AF%E7%94%A8%E6%97%B6%E5%AF%B9%E5%85%B6%E8%BF%9B%E8%A1%8C%E9%A2%84%E7%83%AD.png)
我已经建立了以下网站:
- UpgradingSite - DefaultAppPool - d:\sites\upgrading - 无主机头 (binding:80)
- Beta 网站 - BetaAppPool - d:\sites\beta - beta.mysite.com (binding:80)
设置为 Beta Site 在运行时提供服务,但当我禁用该网站时,升级网站将接管。这样做也是为了在网站意外关闭时显示更好的内容。
部署顺序如下:
- 在 IIS 中禁用
Beta Site
网站(使升级页面可见) - 拉取最新的更改
- 运行构建脚本
- 使能够
Beta Site
- 打开 IE 并预热网站。(2 分钟左右)
问题如下:
我需要一种方法来在未启用时预热网站Beta Site
,但是我实际上无法访问该网站(因为它已被禁用)。我不希望在网站可用之前启用它,因为我们不希望我们的测试版用户体验与预热周期相关的长时间加载。
有一个很酷的 IIS 模块可以做这样的事情,但它已停产并且不再受支持。
有任何想法吗?
让我澄清一下。当我说禁用时,我指的是网站入口(如果您愿意的话可以称为端点),而不是应用程序池。
这个想法是让网站在向用户提供更新页面的同时进行预热。一旦网站预热并运行良好,它就会切换开关,允许beta.mysite.com
由现在已预热的应用程序池。
我知道可以通过调用页面来预热脚本,但如果端点关闭,我就无法调用页面(因此,在脚本预热站点时,升级页面/站点仍会为用户提供服务)
答案1
它不能同时处于“预热”状态和禁用状态。“预热”的意思是它已经浏览过网站并加载了代码各个阶段所需的 .DLL。如果第一步是关闭并更新它,您就无法预热……您将得到糟糕的代码和预热的页面!
您需要启动网站的管理员运行快速 VB 或 powershell 脚本来调用页面并开始预热。网络上有大量预热示例脚本。他们使用各种 URL 调用网站,然后忽略返回。
由于您有一个非常清晰的部署,我会编写一个启用 Beta 脚本,启动网站,然后进行预热,所有操作都在一个脚本中完成。
更新
既然您已经澄清了,让我补充一个建议。如果您只关闭网站而不关闭应用程序池,那么您可能能够将第二个网站指向相同的文件目录并使用相同的池,但将该网站配置为只能在高端口上访问(并且可能只能在本地访问)。然后,您可以触摸该网站上的 URL,并通过访问该隐藏网站来完成大部分预热工作。