第四十六章 压缩对 CSP 表单请求的响应 (GZIP ZLIB) - 使用 GZIP ZLIB 库
使用 GZIP ZLIB 库
Web
网关使用 ZLIB
库实现两种压缩响应数据的操作模式(1
和 2
):
-
在此模式下,
Web
网关将从IRIS
接收到的所有数据传输到压缩器中。处理完所有数据后,压缩器会将压缩数据流回Web
网关,然后将其转发到客户端。此模式提供最佳的压缩效果,但延迟稍高。当然,对于较大的形式,延迟更为明显。
-
在此模式下,
Web
网关将从IRIS
接收到的所有数据传输到压缩器中。在每次调用中,压缩器都会生成尽可能多的压缩数据供Web Gateway
使用,然后将其转发到客户端。此模式提供尽可能低的延迟,但会稍微降低压缩级别。当然,对于较大的形状,压缩程度的降低更为明显。一般来说,模式
2
更适合通常无法提前知道响应包含多少数据的Web
应用程序。
如果(且仅当)Web
网关能够成功压缩从 IRIS
返回的数据流,它就会修改 HTTP
响应标头以包含适当的内容编码指令。例如:
java
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
Set-Cookie: CSPSESSIONID=000000000002119qMwh3003228403243; path=/csp/samples/;
Cache-Control: no-cache
Connection: Close
Date: <date and time>
Expires: <date and ttime>
Pragma: no-cache
Content-Encoding: gzip
在尝试压缩响应数据之前,Web Gateway
始终检查 Accept-Encoding HTTP
请求标头(HTTP_ACCEPT_ENCODING CGI
环境变量)的值。仅当客户端指示其能够处理压缩内容时,Web
网关才会压缩响应。
示例:
java
Accept-Encoding: gzip, deflate
有多种方法可以指定应压缩 CSP
响应。这些将在以下各节中讨论。
指定单个页面的压缩
在 Web
应用程序中,%response
对象包含一个名为 GzipOutput
的属性。如果此属性设置为 true
(或所需的模式),Web Gateway
将尝试压缩响应。
java
<script language=objectscript method=OnPreHTTP arguments=""
returntype=%Boolean>
Set %response.GzipOutput = 2
Quit 1
</script>
还可以通过将 CSP-gzip
指令添加到 HTTP
响应标头来按页指定压缩。当然,这必须在 OnPreHTTP
方法中完成。例如:
xml
<script language=objectscript method=OnPreHTTP arguments=""
returntype=%Boolean>
Do %response.SetHeader("CSP-gzip", "2")
Quit 1
</script>
CSP-gzip
标头指令应设置为所需的压缩模式(1
或 2
)。
指定应用程序路径中所有页面的压缩
可以基于每个应用程序路径指定压缩。顺便说一句,这是指示在使用 Web
服务器输出过滤器(例如 mod_deflate
)时应使用压缩的最常见方法。
在 Web
网关应用程序访问部分使用以下配置参数:
GZIP Compression
- 如果启用,该路径的所有CSP
输出都会被压缩。默认为启用。GZIP Minimum File Size
- 控制激活压缩的最小响应大小(以字节为单位)。如果留空,则启用GZIP
的所有响应都会被压缩。GZIP Exclude File Types
- 要从GZIP
压缩中排除的文件类型列表。文件可以按 MIME 类型(例如image/jpeg
)或通用扩展名(例如 jpeg)列出。默认情况下,排除这些常见(本机压缩)图像文件:
GZIP 排除文件类型:jpeg gif ico png gz zip mp3 mp4 tiff
。用空格分隔附加类型或扩展。
监控
日志级别 V3
指示 Web Gateway
记录所有成功压缩的响应所达到的压缩程度。记录压缩数据和原始未压缩数据流的大小。
示例:
java
GZIP Compression for /csp/samples/inspector.csp
GZIP Mode=1; Uncompressed Content Size=19042; Compressed Content Size=2499 (13 percent)