第四十六章 压缩对 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) 
相关推荐
kyriewen几秒前
前端错误监控最全指南:捕获 JS 异常、Promise 拒绝、资源加载失败,附上报代码
前端·javascript·监控
昵称为空C10 分钟前
手撸一个动态 SQL 执行引擎:不重启服务,在线增删改查任意数据库
spring boot·后端
狗哥哥12 分钟前
船队运营可视化技术方案
前端
用户83562907805114 分钟前
用 Python 自动化 PowerPoint 演讲者备注添加
后端·python
大家的林语冰15 分钟前
ESLint 近期动态大全,新版本正式发布,antfu 大佬推荐的插件也更新了!
前端·javascript·前端工程化
只会cv的前端攻城狮16 分钟前
DSL 领域模型架构设计:消灭 CRUD 重复工作
前端·架构
神奇小汤圆32 分钟前
科研神器再升级!Claude Code 全套 Skills,16 大科研场景全覆盖!
后端
tyung1 小时前
Go 手写有界 SPSC 环形队列:无 CAS、无锁、Cache 友好的无锁模型
后端·go
咕白m6251 小时前
使用 C# 在 Excel 中应用多种字体样式
后端·c#
Java编程爱好者1 小时前
放弃 Spring AI?这 3 个开源框架,才是让 SpringBoot 玩转 AI Agent 的正解
后端