HTTP 协议设置 <httpProtocol>
概述
概述 <httpProtocol>
元素配置 HTTP 保持的连接以及 Internet Information Services (IIS) 7 发送到 Web 客户端的自定义和间接响应标头。
浏览器通常会发出多个请求,以便下载整个网页。 为了增强服务器性能,大多数 Web 浏览器请求服务器在这些多个请求中保持连接打开状态,这是一项称为 HTTP 保持活动的功能。 如果没有 HTTP 保持活动,如果浏览器对包含多个元素(如图形)的页面发出多个请求,可能需要为每个元素建立单独的连接。 这些额外的请求和连接需要额外的服务器活动和资源,从而降低服务器效率。 其他连接也会使浏览器速度变慢且响应能力下降,尤其是在连接速度缓慢时。
兼容性
版本 | 说明 |
---|---|
IIS 10.0 | <httpProtocol> 元素在 IIS 10.0 中未进行修改。 |
IIS 8.5 | <httpProtocol> 元素在 IIS 8.5 中未进行修改。 |
IIS 8.0 | <httpProtocol> 元素在 IIS 8.0 中未进行修改。 |
IIS 7.5 | <httpProtocol> 元素未在 IIS 7.5 中进行修改。 |
IIS 7.0 | <httpProtocol> 元素是在 IIS 7.0 中引入的。 |
IIS 6.0 | <httpProtocol> 元素的 allowKeepAlive 属性替换 IIS 6.0 AllowKeepAlive 元数据库属性。 |
安装
<httpProtocol>
元素包含在 IIS 7 的默认安装中。
操作方式
如何为网站或应用程序启用 HTTP 保持活动
打开 Internet Information Services (IIS) 管理器:
如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:
- 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS) 管理器”。
如果使用的是 Windows 8 或 Windows 8.1:
- 按住 Windows 键,按字母 X,然后单击“控制面板”。
- 单击“管理工具”,然后双击“Internet Information Services (IIS) 管理器”。
如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:
- 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS) 管理器”。
如果使用 Windows Vista 或 Windows 7:
- 在任务栏上,单击“开始”,然后单击“控制面板”。
- 双击“管理工具”,然后双击“Internet Information Services (IIS) 管理器”。
在“连接”窗格中,转到要为其设置自定义 HTTP 标头的站点、应用程序或目录。
在“主页”窗格中,双击“HTTP 响应标头”。
在“HTTP 响应头”页的“操作”窗格中单击“设置自定义标头...”。
在“设置通用 HTTP 响应头”对话框中,选中该框以启用 HTTP 保持活动,然后单击“确定”。
配置
特性
属性 | 说明 |
---|---|
allowKeepAlive |
可选布尔属性。 指定是 (true) 否 (false) 允许保持活动处理。 默认值为 true 。 |
子元素
元素 | 说明 |
---|---|
customHeaders |
配置在 Web 服务器的响应中返回的自定义响应标头。 |
redirectHeaders |
配置仅在 Web 服务器重定向请求时通过响应返回的响应标头。 |
配置示例
以下代码示例为默认网站启用 HTTP 保持活动。
<configuration>
<system.webServer>
<httpProtocol allowKeepAlive="true" />
</system.webServer>
</configuration>
注意
以下默认 <httpProtocol>
元素是在 IIS 7 的 ApplicationHost.config 文件中配置的。
<httpProtocol>
<customHeaders>
<clear />
<add name="X-Powered-By" value="ASP.NET" />
</customHeaders>
<redirectHeaders>
<clear />
</redirectHeaders>
</httpProtocol>
代码示例
以下代码示例为默认网站启用 HTTP 保持活动。
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/httpProtocol /allowKeepAlive:"True"
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetWebConfiguration("Default Web Site");
ConfigurationSection httpProtocolSection = config.GetSection("system.webServer/httpProtocol");
httpProtocolSection["allowKeepAlive"] = true;
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetWebConfiguration("Default Web Site")
Dim httpProtocolSection As ConfigurationSection = config.GetSection("system.webServer/httpProtocol")
httpProtocolSection("allowKeepAlive") = True
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";
var httpProtocolSection = adminManager.GetAdminSection("system.webServer/httpProtocol", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpProtocolSection.Properties.Item("allowKeepAlive").Value = true;
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"
Set httpProtocolSection = adminManager.GetAdminSection("system.webServer/httpProtocol", "MACHINE/WEBROOT/APPHOST/Default Web Site")
httpProtocolSection.Properties.Item("allowKeepAlive").Value = True
adminManager.CommitChanges()