Citrix ADC

HTTP 压缩

对于具有可压缩内容的网站,HTTP 压缩功能通过压缩从服务器发送到压缩感知浏览器的 HTTP 响应来实现无损压缩,以缓解延迟、较长的下载时间和其他网络性能问题。您可以通过将计算密集型压缩任务从服务器卸载到 Citrix ADC 设备来提高服务器性能。

下表介绍了 HTTP 压缩功能的功能:

功能 说明
Compression Ratio(压缩比) 压缩比取决于响应中的文件类型,但始终显著,显著减少了通过网络传输的数据量。
浏览器感知 Citrix ADC 仅向感知压缩的浏览器提供压缩数据,从而缩短客户端和服务器之间的事务时间。大多数现代 Web 浏览器都支持 HTTP 压缩。
压缩阻塞 您可以通过应用内置操作来定义内容过滤器以选择性地阻止压缩。
压缩缓存 启用集成缓存功能后,从本地缓存处理对相同内容的后续请求,从而减少到服务器的往返次数并缩短事务时间。
HTTPS 支持 压缩对 SSL 连接特别有用,因为它减少了必须在服务器上或 Citrix ADC 设备上加密并由客户端解密的内容量。
智能响应过滤 Citrix ADC 压缩引擎根据定义的压缩参数智能过滤服务器响应。例如,压缩引擎会检测零内容长度响应和压缩响应,并且不会压缩它们。通过检测压缩响应,源站点可以将基于服务器的压缩与 Citrix ADC 压缩功能结合使用。
压缩切换 Citrix ADC 设备透明地将来自压缩感知客户端的请求定向到支持压缩的服务器,以便压缩对这些客户端的响应,并且不会因压缩处理而延迟对其他客户端的响应。

HTTP 压缩的工作原理

Citrix ADC 可以压缩静态和动态生成的数据。它应用 GZIP 或 DEFLATE 压缩算法从服务器响应中删除无关和重复的信息,并以更加简洁和有效的格式表示原始信息。这些压缩数据被发送到客户端的浏览器,并根据浏览器支持的算法或算法(GZIP 或 DFRAATE)来解压缩。

Citrix ADC 压缩不同地处理静态和动态内容。

  • 静态文件只压缩一次,压缩副本存储在本地内存中。对缓存文件的后续客户端请求将从该内存提供服务。
  • 每次客户端请求动态页面时都会动态创建动态页面。

当客户端向服务器发送请求时:

  1. 客户端请求到达 Citrix ADC。ADC 检查标头并存储浏览器支持哪种压缩(如果有)的信息。
  2. ADC 将请求转发到服务器并接收响应。
  3. Citrix ADC 压缩引擎通过将服务器响应与策略匹配来检查其可压缩性。
  4. 如果响应与压缩操作关联的策略匹配,并且客户端浏览器支持该操作指定的压缩算法,Citrix ADC 将应用该算法并将压缩响应发送到客户端浏览器。
  5. 客户端应用支持的压缩算法来解压缩响应。

配置 HTTP 压缩

默认情况下,Citrix ADC 上的压缩处于禁用状态。您必须在配置该功能之前启用该功能。如果启用此功能,ADC 将压缩由压缩策略指定的服务器请求。

使用 CLI 启用 HTTP 压缩

只能为 HTTP 和 SSL 服务启用压缩。您可以在全局范围内启用它,以便它适用于所有 HTTP 和 SSL 服务,也可以仅针对特定服务启用它。

在命令提示符下,输入以下命令之一以启用全局压缩或针对特定服务启用压缩:

  • enable ns feature cmp
  • set service <name> -CMP YES

使用 GUI 配置压缩

执行以下操作之一:

要全局启用压缩,请导航到“系统”>“设置”,单击“配置基本功 能”,然后选择“HTTP 压缩”。

要为特定服务启用压缩,请导航到 流量管理 > 负载平衡 > 服务 ,选择服务,然后单击 编辑 。在“设 置”组中,单击铅笔图标并启用“压缩”。

配置压缩操作

压缩操作指定当请求或响应与操作关联的策略中的规则(表达式)匹配时要执行的操作。例如,您可以配置压缩策略,以标识将发送到特定服务器的请求,并将该策略与压缩服务器响应的操作相关联。

有四个内置的压缩操作:

  • 压缩:使用 GZIP 算法压缩来自支持 GZIP 或同时支持 GZIP 和 DEFATE 的浏览器的数据。使用 DFATE 算法压缩仅支持 DFATE 算法的浏览器中的数据。如果浏览器不支持任何一种算法,则不会压缩浏览器的响应。
  • NO压缩:不压缩数据。
  • GZIP:使用 GZIP 算法压缩支持 GZIP 压缩的浏览器的数据。如果浏览器不支持 GZIP 算法,则不会压缩浏览器的响应。
  • DEFATE:使用 DEFATE 算法压缩支持 DEFATE 算法的浏览器的数据。如果浏览器不支持 DEBATE 算法,则不会压缩浏览器的响应。创建操作后,将操作与一个或多个压缩策略相关联。

在命令提示符下,输入以下命令以创建压缩操作:

add cmp action <name> <cmpType> [-addVaryHeader <addVaryHeader> -varyHeaderValue<string>]

使用 CLI 配置压缩策略

压缩策略包含一个规则,该规则是一个逻辑表达式,使 Citrix ADC 设备能够识别应压缩的流量。

Citrix ADC 从服务器接收 HTTP 响应时,它会评估内置压缩策略和任何自定义压缩策略,以确定是否压缩响应,如果是压缩,则应用的压缩类型。分配给策略的优先级决定了策略与请求匹配的顺序。

在命令提示符下,输入以下命令以创建压缩策略:

add cmp policy <name> -rule <expression> -resAction <string>

使用 GUI 创建压缩操作

导航到优化 > HTTP 压缩 > 作”,单击添加,然后创建压缩操作以指定要对 HTTP 响应执行的压缩类型。

配置压缩策略

压缩策略包含一个规则,该规则是一个逻辑表达式,使 Citrix ADC 设备能够识别应压缩的流量。

Citrix ADC 从服务器接收 HTTP 响应时,它会评估内置压缩策略和任何自定义压缩策略,以确定是否压缩响应,如果是压缩,则应用的压缩类型。分配给策略的优先级决定了策略与请求匹配的顺序。

下表列出了内置 HTTP 压缩策略。启用压缩时,这些策略将全局激活。

内置经典或默认语法策略 说明
ns_nocmp_mozilla_47, ns_adv_nocmp_mozilla_47 阻止从 Mozilla 4.7 浏览器发送请求时 CSS 文件的压缩。
国家人力资金、国家人力资金、国家人力资金、国家人力资金 从 Microsoft Internet 资源管理器浏览器发送请求时压缩 CSS 文件。
应用程序,应用程序,应用程序 压缩由以下应用程序生成的文件:Microsoft Office Word、Microsoft Office Excel、Microsoft Office PowerPoint。
内容类型、内容类型、内容类型 当响应包含内容类型标头并包含文本时,压缩数据。
不可或限制,不可或限制,不可或限制,不可或限制 阻止从 Microsoft Internet 资源管理器浏览器发送请求时进行压缩,响应包含内容类型标头并包含文本或 xml。

绑定压缩策略

要使压缩策略生效,您必须将其全局绑定,以便将其应用于流经 Citrix ADC 的所有流量,或应用到特定虚拟服务器,以便该策略仅应用于目标为该虚拟服务器 VIP 地址的请求。

绑定策略时,您将为其分配优先级。优先级决定了您定义的策略的评估顺序。您可以将优先级设置为任何正整数。

使用 CLI 绑定压缩策略

在命令提示符处,输入以下命令之一以将压缩策略全局绑定或绑定到特定虚拟服务器:

  • bind cmp global <policyName> [-priority <positive_integer>] [-state (ENABLED|DISABLED)]
  • bind lb vserver <vserverName> -policyName <policyName> -priority <positive_integer>

对要绑定压缩策略的每个虚拟服务器重复此命令。

使用 GUI 绑定压缩策略

执行以下操作之一:

在全局级别导航到 优化 > HTTP 压缩 > 略,单击 策略管理器 ,并通过指定相关的绑定点和连接类型(请求/响应)来绑定所需的策略。

在虚拟服务器级别

对于负载平衡虚拟服务器,请导航至流量管理 > 负载平衡 > 虚拟服务器,选择所需的虚拟服务器,单击 略”,然后绑定相关策略。

对于内容交换虚拟服务器,请导航至“流量管理”>“内容交换”>“虚拟服务器”,选择所需的虚拟服务器,单击“策略”,然后绑定相关策略。

设置全局压缩参数以获得最佳性能

许多用户接受全局压缩参数的默认值,但您可以通过自定义这些设置来提供更有效的压缩。

注意配置全局压缩参数 后,您不必重新启动设备。它们立即被应用到新的流程。

下表介绍了可以在 Citrix ADC 上设置的压缩参数。

压缩参数 说明
量子大小 为累积服务器响应而维护的缓冲区大小(以 KB 为单位)。当缓冲区大小超过此值时,响应将被压缩。例如,如果将量子大小设置为 50 KB,Citrix ADC 会在缓冲区大小变得大于 50 KB 时压缩缓冲区的内容。最小值:1。最大值:63488。默认值:57344。
压缩级别 应用于服务器响应的压缩级别。可能的值:最佳速度,最佳压缩,最佳。
最小 HTTP 响应大小 压缩的 HTTP 响应的最小大小(以字节为单位)。小于此参数指定值的响应在不压缩的情况下发送。
绕过 CPU 使用率压缩 Citrix ADC CPU 使用率(百分比)等于或高于该百分比不会完成压缩。默认值:100。
策略类型* 用于压缩的策略类型。可能的值:经典、默认语法。默认值:经典。
允许服务器端压缩 允许服务器将压缩数据发送到 Citrix ADC。
压缩推送数据包 收到带有 TCP PUSH 标志的数据包后,立即压缩累积的数据包,而无需等待量子缓冲区被填充。
外部缓存 发出一个私有响应指令,指示响应消息面向单个用户,并且不得由共享缓存或代理缓存进行缓存。

使用 GUI 配置 HTTP 压缩

执行以下操作之一:

  • 要全局启用压缩,请导航到系统 > 设置”,单击“配置基本功能”,然后选择HTTP 压缩
  • 要为特定服务启用压缩,请导航到 流量管理 > 负载平衡 > 服务 ,选择服务,然后单击 编辑
  • 设置组中,单击铅笔图标并启用压缩

使用 GUI 配置压缩操作

导航到优化 > HTTP 压缩 > 作”,单击添加,然后创建压缩操作以指定要对 HTTP 响应执行的压缩类型

使用 GUI 配置压缩策略

导航到优化 > HTTP 压缩> 策略,单击添加,然后通过指定要执行的条件和相应操作来创建压缩策略。

评估压缩配置

您可以在仪表板实用程序或 SNMP 监视器中查看压缩统计信息。仪表板实用程序以表格和图形格式显示摘要和详细统计信息。

或者,您还可以查看压缩策略的统计信息,包括策略计数器在基于策略的压缩期间增加的点击次数。

注意

  • 有关统计信息和图表的详细信息,请参阅 Citrix ADC 设备上的“控制板”帮助。
  • 有关 SNMP 的详细信息,请参阅SNMP主题。

使用 CLI 查看压缩统计信息

在命令提示符下,输入以下命令以显示压缩统计信息:

  1. 显示压缩统计信息摘要。

stat cmp

注意: stat cmp 策略命令仅显示默认语法压缩策略的统计信息。

  1. 显示压缩策略点击和详细信息 show cmp policy <name>

  2. 显示详细的压缩统计信息 stat cmp -detail

使用仪表板查看压缩统计信息:

在仪表板页面中,您可以显示以下类型的压缩统计信息:

  • 选择“压缩”以显示压缩统计信息的摘要。
  • 若要按协议类型显示详细的压缩统计信息,请单击“详细信息”
  • 要显示压缩功能处理的请求速率,请单击“图形视图”选项卡。

使用 SNMP 查看压缩统计信息

您可以使用 SNMP 网络管理应用程序查看以下压缩统计信息。

  • 压缩请求的数量 (OID: 1.3.6.1.4.1.5951.4.1.1.50.1)
  • 传输的压缩字节数 (OID: 1.3.6.1.4.1.5951.4.1.1.50.2)
  • 收到的可压缩字节数 (OID: 1.3.6.1.4.1.5951.4.1.1.50.3)
  • 传输的可压缩包数目 (OID: 1.3.6.1.4.1.5951.4.1.1.50.4)
  • 收到的可压缩包数目 (OID: 1.3.6.1.4.1.5951.4.1.1.50.5)
  • 收到的可压缩数据和传输的压缩数据的比率 (OID: 1.3.6.1.4.1.5951.4.1.1.50.6)
  • 收到的总数据与传输数据总数的比率 (OID: 1.3.6.1.4.1.5951.4.1.1.50.7)

使用 GUI 查看其他压缩统计信息

  1. 要显示 HTTP 压缩统计信息,请执行以下操作:

导航到优化 > HTTP 压缩,然后单击统计

  1. 显示压缩策略的统计信息。

导航到优化 > HTTP 压缩 > 略”>“选择策略”,然后单击统计

  1. 显示压缩策略标签的统计信息

  2. 导航到优化 > HTTP 压缩 > 略”>“选择策略标签”,然后单击统计

卸载 HTTP 压缩

在服务器上执行压缩可能会影响服务器的性能。置于 Web 服务器前面并配置为 HTTP 压缩的 Citrix ADC 卸载静态和动态内容的压缩,从而节省服务器 CPU 周期和资源。

您可以通过以下两种方式之一从 Web 服务器卸载压缩:

禁用 Web 服务器上的压缩,在全局级别启用 Citrix ADC 压缩功能,并配置服务以进行压缩。

在 Web 服务器上保持压缩功能启用状态,并将 Citrix ADC 设备配置为从所有 HTTP 客户端请求中删除“接受编码”标头。然后,服务器发送未压缩的响应。Citrix ADC 在将服务器响应发送到客户端之前压缩服务器响应。

注意 如果服务器自动压缩所有响应,则第二个选项不起作用。Citrix ADC 不会尝试压缩已压缩的响应。

服务器分析参数使 Citrix ADC 设备能够处理卸载 HTTP 压缩。默认情况下,此参数设置为开,以便服务器将压缩数据发送到 Citrix ADC 设备。要卸载 HTTP 压缩,您需要将服务器分析参数设置为 OFF。在命令提示符下,输入以下命令:

set service <service name> -CMP YES

对要启用压缩的每个服务重复此命令。

show service <service name>

对每个服务重复此命令,以验证是否已启用压缩。

Save config

set cmp parameter –serverCmp OFF

注意:

Servercmp 参数处于打开状态并且设备收到来自服务器的压缩响应时,设备不会进一步压缩数据。相反,它将压缩的响应转发给客户端。

HTTP 压缩