Apache GZIP 用于图像 - 有什么原因吗?

Apache GZIP 用于图像 - 有什么原因吗?

JPEG、GIF、PNG 和 WEBP 图像已经经过压缩。无论客户端是否表示可以接受 GZIP 压缩,是否有理由使用 GZIP 压缩来提供这些图像?

curl -H "Accept-Encoding: gzip" -I ^
 https://www.nps.gov/articles/000/images/LATP_Article_TheCalutronGirls.jpg

该 HEAD 请求产生以下标头:

HTTP/1.1 200 OK
Content-Type: image/jpeg
Date: Sat, 05 Aug 2023 04:13:29 GMT
Server: Apache
Last-Modified: Wed, 04 Jan 2023 21:36:01 GMT
Content-Encoding: gzip

该服务器将以 GZIP 格式发送图像 - JPEG、PNG、WEBP。我认为这完全没有意义,是服务器配置错误,但也许时代变了,现在这有点合法了……很快就会成为新常态?

(服务器时钟误差 58 小时这一事实似乎表明服务器管理不善。)

8/8/23:通过 NPS 向其报告联系表

答案1

1019174当我将原始文件的字节数与 gzip 压缩版本的字节数进行比较时,对该文件添加 gzip 压缩(默认设置)确实会使其略小(± 1.7%)1001991。从这个角度来看,使用压缩肯定不会有害,而且确实可以节省“一些” 带宽。
这种有限的好处是否超过了实现压缩所需的 CPU 周期?我不知道。

然而,对 CSS、Javascript 和 HTML 内容进行压缩通常被认为更有益,例如以下数字就证明了这一点:本文这表明压缩可使传输的 HTML/CSS/JavaScript 数据量减少 60-80%。

但一般来说不,压缩已经压缩的数据是没有意义的例如 JPEG、PNG 和大多数其他图像格式,也不适用于任何其他已压缩的数据,例如实际的 ZIP 存档和 PDF 文档。
正如此示例所示:您不应该通过添加第二层压缩来实现更多的额外压缩,并且(互联网共识是)在某些情况下,额外的压缩实际上可能会使文件稍微大一些。

这就是为什么 Apache 手册mod_deflate包括仅对特定文件类型启用压缩和/或排除某些其他类型文件的示例。

<Directory "/path/to/html/content">
    # enable compression only for the html files 
    AddOutputFilterByType DEFLATE text/html
</Directory>


<Directory "/path/to/html/content">
   # enable compression for all content 
   SetOutputFilter DEFLATE

   # exclude image files from compression by file extension 
   SetEnvIfNoCase Request_URI "\.(?:gif|jpe?g|png)$" no-gzip
</Directory>

相关内容