在 Jetty 中为特定路径应用 GZipHandler
Apply GZipHandler in Jetty for specific paths
如何仅包含与 Jetty 9.4 中的 GZipHandler 模式匹配的特定路径。例如,我有一个请求映射到路径 /api/employees/{id}/payments
。我只需要将 GZip 压缩应用于此路径。 Jetty 仅支持包含路径中的精确匹配或前缀 (/*
) 或后缀 (*.
)。我可以将 GZipHandler 配置为只压缩对路径 /api/employees/{id}/payments
的请求,例如 /api/employees/1/payments
、/api/employees/42/payments
等吗?
Jetty GzipHandler 支持标准 Servlet URL-Pattern 映射。
您 /api/employees/{id}/payments
的 "request mapping" 不是有效的 servlet url-pattern 字符串。
它看起来像一个 REST API 字符串,它完全在您的 REST 库中完成,没有真正涉及 servlet 规范或 servlet api。
与其尝试从路径(包含/排除)控制 GzipHandler
,不如考虑设置它应该响应的 Mime-Type 映射。这样您就可以设置 /api/*
的包含路径,并让 mime-types 包含决定哪些内容应该压缩或不压缩。请记住,如果 http 客户端未指示它可以处理 gzip(它检查 Accept
和 Accept-Encoding
请求 headers),GzipHandler 将不会压缩,因此可以安全地进行转换更大的网。
同时考虑设置最小大小配置 setMinGzipSize(int)
以便 tiny/small 响应不会被不必要地压缩。
如何仅包含与 Jetty 9.4 中的 GZipHandler 模式匹配的特定路径。例如,我有一个请求映射到路径 /api/employees/{id}/payments
。我只需要将 GZip 压缩应用于此路径。 Jetty 仅支持包含路径中的精确匹配或前缀 (/*
) 或后缀 (*.
)。我可以将 GZipHandler 配置为只压缩对路径 /api/employees/{id}/payments
的请求,例如 /api/employees/1/payments
、/api/employees/42/payments
等吗?
Jetty GzipHandler 支持标准 Servlet URL-Pattern 映射。
您 /api/employees/{id}/payments
的 "request mapping" 不是有效的 servlet url-pattern 字符串。
它看起来像一个 REST API 字符串,它完全在您的 REST 库中完成,没有真正涉及 servlet 规范或 servlet api。
与其尝试从路径(包含/排除)控制 GzipHandler
,不如考虑设置它应该响应的 Mime-Type 映射。这样您就可以设置 /api/*
的包含路径,并让 mime-types 包含决定哪些内容应该压缩或不压缩。请记住,如果 http 客户端未指示它可以处理 gzip(它检查 Accept
和 Accept-Encoding
请求 headers),GzipHandler 将不会压缩,因此可以安全地进行转换更大的网。
同时考虑设置最小大小配置 setMinGzipSize(int)
以便 tiny/small 响应不会被不必要地压缩。