nginx 为哪些内容类型启用压缩

nginx which content types to enable compression for

在几个解释 "how to set up gzip compression," 的 nginx 教程站点中,我看到了这个重复的 MIME 类型列表:

gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

但是,我立即发现此列表并未导致在 Chromium 中为 JavaScript 启用压缩。我必须将 application/javascript 添加到列表中。这让我相信这个列表已经过时了。

是否有我想要 gzip 的所有内容类型的最终列表?

没有 想要 gzip 的文件类型的明确列表。任何可读为纯文本的文件类型(即 non-binary 文件)都可以压缩,因此 "definitive" 列表将是巨大的。因此,它最终取决于您实际提供的文件类型,您可以通过 HTTP Content-Type header.

检查任何给定文件

如果您想加倍确定您涵盖了特定扩展的所有可能的 MIME 类型(我认为这是合理的),查看 this SO post, this text file 包含一个非常详尽的列表。

重要的是要注意某些二进制文件类型,如 .png.pdf(甚至 .woff)将压缩合并到格式本身中,因此不应压缩(因为这样做所以可能会产生比原始文件更大的压缩文件)。我的经验法则是:如果我的代码编辑器无法将文件读取为 UTF-8 文本,则对文件进行 gzip 压缩是不明智的(或者至少效率不高)。

FWIW,我通常会在我的网站上使用 gzip 压缩以下格式(在我的 Apache .htaccess 中):

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/xml text/css text/javascript application/javascript application/x-javascript application/json application/xml image/svg+xml
</IfModule>