第四十六章 压缩对 CSP 表单请求的响应 (GZIP ZLIB) - 使用 GZIP ZLIB 库

第四十六章 压缩对 CSP 表单请求的响应 (GZIP ZLIB) - 使用 GZIP ZLIB 库

使用 GZIP ZLIB 库

Web 网关使用 ZLIB 库实现两种压缩响应数据的操作模式(12):

  1. 在此模式下,Web 网关将从 IRIS 接收到的所有数据传输到压缩器中。处理完所有数据后,压缩器会将压缩数据流回 Web 网关,然后将其转发到客户端。

    此模式提供最佳的压缩效果,但延迟稍高。当然,对于较大的形式,延迟更为明显。

  2. 在此模式下,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 标头指令应设置为所需的压缩模式(12)。

指定应用程序路径中所有页面的压缩

可以基于每个应用程序路径指定压缩。顺便说一句,这是指示在使用 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) 
相关推荐
货拉拉技术几秒前
如何用 AI 做业务级 Code Review
前端·agent·前端工程化
李剑一5 分钟前
前端圈子又出新东西了,大幅提升解析速度。尤雨溪推荐,但我不太推荐
前端
Java编程爱好者6 分钟前
Condition底层机制剖析:多线程等待与通知机制
后端
青屿ovo15 分钟前
Vue前端页面版本检测解决方案
前端·vue.js
front_20 分钟前
React Hook介绍
前端
Java编程爱好者27 分钟前
面试官:你知道 MCP、Skill、Function Call 这三个的区别吗?
后端
HashTang30 分钟前
【AI 编程实战】第 12 篇:从 0 到 1 的回顾 - 项目总结与 AI 协作心得
前端·uni-app·ai编程
狂炫冰美式31 分钟前
把手从键盘上抬起来:AI 编程的 3 个不可逆阶段
前端·后端·ai编程
王中阳Go1 小时前
Go 协程池满了怎么办?面试官问我“兜底策略”,我差点挂了……
后端
codingWhat1 小时前
uniapp 多地区、多平台、多环境打包方案
前端·架构·node.js