gpt4 book ai didi

nginx - 为什么不遵守 gzip 最小长度指令?

转载 作者:行者123 更新时间:2023-12-04 00:58:14 25 4
gpt4 key购买 nike

如果我理解正确,最好不要 gzip 小资源,因为它们实际上可能会变大,同时仍然会对 CPU 性能造成影响。
所以使用 gzip_min_length 指令是一个明显的解决方案。
但是,在运行 REST API 的服务器上尝试此操作时,我正在处理此问题似乎不起作用。
当我收到一个空的 json 响应或一个非常小的响应时,Content-Encoding header 仍然存在并读取“gzip”。

HTTP Response headers

我的问题是为什么 NginX 不尊重此设置,我该怎么做才能解决它?

API 建立在 Lumen 上微框架。

我已经附加了我在 nginx.conf 中使用的 Gzip 设置:

  # Compression

# Enable Gzip compressed.
gzip on;

# Enable compression both for HTTP/1.0 and HTTP/1.1.
gzip_http_version 1.1;

# Compression level (1-9).
# 5 is a perfect compromise between size and cpu usage, offering about
# 75% reduction for most ascii files (almost identical to level 9).
gzip_comp_level 5;

# Don't compress anything that's already small and unlikely to shrink much
# if at all (the default is 20 bytes, which is bad as that usually leads to
# larger files after gzipping).
gzip_min_length 1000;

# Compress data even for clients that are connecting to us via proxies,
# identified by the "Via" header (required for CloudFront).
gzip_proxied any;

# Tell proxies to cache both the gzipped and regular version of a resource
# whenever the client's Accept-Encoding capabilities header varies;
# Avoids the issue where a non-gzip capable client (which is extremely rare
# today) would display gibberish if their proxy gave them the gzipped version.
gzip_vary on;

# Compress all output labeled with one of the following MIME-types.
gzip_types
application/atom+xml
application/javascript
application/json
application/rss+xml
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/svg+xml
image/x-icon
text/css
text/plain
text/x-component;
# text/html is always compressed by HttpGzipModule

最佳答案

确认我上面的注释,这似乎与 NGINX gzip module documentation 中的注释相对应。声明“长度仅由“内容长度”响应头字段确定。”

gzip_min_length 1000; ,我的 JSON 响应被 gzip 压缩,即使它们只有 100 个字节。

我更改了我的应用程序以添加 Content-Length: 100 header 和 NGINX 发送 JSON 响应而不使用 gzip 编码。

如果我将配置更改为 gzip_min_length 80;具有相同的 100 字节内容长度,然后 NGINX 按预期应用 gzip 编码。

小故事:您需要申请 Content-Length NGINX 的 header 以正确处理 gzip_min_length查看。

关于nginx - 为什么不遵守 gzip 最小长度指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33269448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com