第四十六章 压缩对 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) 
相关推荐
用户21366100357212 分钟前
Vue2组件化开发与父子通信
前端·vue.js
要阿尔卑斯吗38 分钟前
企业级 RAG 系统的文件标签管理:三层架构与层级优化实战
后端
要阿尔卑斯吗38 分钟前
Agent开发之为什么有了LangChain4j框架,我们却不能直接使用它?——桥接层设计详解
后端
用户77139702070643 分钟前
从CMD到PowerShell:一个.NET开发者的命令行进化之路
后端
祎雪双十Gy1 小时前
从 DataX 的配置加载说起:我用 FastJson2 做了一个轻量级动态配置管理库
java·后端
Momo__1 小时前
TypeScript satisfies 操作符——比 as 更安全的类型守门员
前端·typescript
用户2136610035721 小时前
Vue2事件系统与指令进阶
前端·vue.js
labixiong1 小时前
实现一个能跑的迷你版Promise(一)
前端·javascript·面试
Csvn2 小时前
Nginx 配置与运维管理 — 从安装到 SSL 反向代理
后端
Csvn3 小时前
`??` 和 `||` 搞混,线上用户头像全挂了
前端