第四十五章 压缩对 CSP 表单请求的响应 (GZIP ZLIB)
在将 CSP
引擎生成的响应分派到客户端之前对其进行压缩是有利的,因为它可以显着减少将响应传输到客户端所需的网络带宽。从客户端的角度来看,应用程序的性能得到了提高。对于通过速度较慢的电信网络通过移动设备访问应用程序的客户端来说尤其如此。当然,实际压缩数据所需的 Web
服务器主机的CPU
时间是有成本的,但为了获得这些优势,这是一个很小的代价。
对于生成大量响应数据的 CSP
页面,提供压缩响应数据的优势尤其明显。
在 Web
服务器环境中实现 GZIP
有两种方法。
- 使用
Web Gateway
自己的与此处描述的GZIP
库的接口。 - 使用 GZIP 输出过滤器作为托管 Web 服务器的附加组件。
大多数网络服务器都提供用于压缩数据的附加设施。 Windows/IIS
提供了 gzip
过滤器(作为 ISAPI
过滤器实现)。 Apache Group
提供了一个作为附加模块实现的压缩过滤器(mod_deflate.c
– 令人困惑的是,它实现了 gzip
压缩而不是 deflate
)。 Apache
还有一个名为 mod_gzip.c
的第三方模块。有许多第三方 GZIP
产品可作为大多数 Web
服务器的附加组件。
直接在 Web Gateway
中实施压缩解决方案的优点如下:
- 易于设置和配置。
- 更灵活地控制要压缩的
CSP
文件。 - 如果数据在大缓冲区中提交给压缩器函数,压缩效果往往会更好。
Web
网关从IRIS
接收相当大的响应内容;因此,压缩性能和达到的压缩程度都很好。
我们发现,如果在 Web
网关级别启用分块传输编码,并且为相同资源启用 Apache mod_deflate
输出过滤器,则浏览器有时无法显示响应内容。
Web
网关利用免费提供的 GZIP
(或 zlib
)库来实现数据压缩。 RFC
(征求意见)1950
至 1952
中描述了所使用的压缩算法。
GZIP/ZLIB 库
GZIP/ZLIB
库由 Jean-loup Gailly
和 Mark Adler
开发(版权所有 (C) 1995-2009)。 Windows
上的 IRIS
发行版提供了该库的预构建版本。在 UNIX
系统上,Web Gateway
使用操作系统提供的 ZLIB
版本。
当第一次请求响应压缩时,Web Gateway
会动态链接到 ZLIB
库。此后,ZLIB
库将保持加载状态,直到 Web Gateway
关闭。
如果 Web Gateway
能够按需加载 ZLIB
库并识别所有必需的函数,则会以以下格式将初始化消息写入事件日志(其中 x.x.xx
代表系统上的库版本):
Web Gateway Initialization
The ZLIB library is loaded - Version x.x.xx.
(This library is used for the optional GZIP compression facility)
如果 Web Gateway
无法找到或链接到 ZLIB
库,它会像以前一样运行,并且返回页面而不进行压缩。失败声明将写入事件日志。