第四十五章 压缩对 CSP 表单请求的响应 (GZIP ZLIB)

68 阅读3分钟

第四十五章 压缩对 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(征求意见)19501952 中描述了所使用的压缩算法。

GZIP/ZLIB 库

GZIP/ZLIB 库由 Jean-loup GaillyMark 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 库,它会像以前一样运行,并且返回页面而不进行压缩。失败声明将写入事件日志。