什么是 Gzip 压缩

550 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第33天,点击查看活动详情

Gzip 压缩

什么是 Gzip 压缩

Gzip是一种文件格式和软件应用程序,用于Unix和类Unix系统,用于在将HTTP内容提供给客户端之前对其进行压缩。众所周知,该过程会将文件缩小多达 80%,从而缩短页面加载时间、降低带宽消耗并减少 SSL 开销(由于 SSL 握手期间往返次数减少)。

与 gzip 关联的文件类型包括:

  • .gz – 指示由 gzip 算法压缩的文件扩展名。
  • .tar文件,压缩包 - 一种用于存储多个文件以进行存档但不用于压缩的格式。Gzip可用于压缩.tar文件。
  • .tgz、.tar.gz.gz 文件 – 指示已由 gzip 压缩的.tar文件。

启用 Gzip 命令

Gzip可以应用于许多不同的平台,包括下面详述的平台:

WordPress

您可以使用支持gzip的缓存插件在WordPress上启用gzip,或者通过.htaccess文件在Web服务器上启用gzip。

阿帕奇

要在 Apache Web 服务器上启用 gzip,请在 .htaccess 文件末尾的模块内添加 gzip 压缩命令。mod_deflate

例如:

<IfModule mod_deflate.c>
# Compress HTML, CSS, JavaScript, Text, XML and fonts
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/rss+xml 
AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
AddOutputFilterByType DEFLATE application/x-font 
AddOutputFilterByType DEFLATE application/x-font-opentype
AddOutputFilterByType DEFLATE application/x-font-otf
AddOutputFilterByType DEFLATE application/x-font-truetype
AddOutputFilterByType DEFLATE application/x-font-ttf
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml 
AddOutputFilterByType DEFLATE font/opentype 
AddOutputFilterByType DEFLATE font/otf 
AddOutputFilterByType DEFLATE font/ttf 
AddOutputFilterByType DEFLATE image/svg+xml 
AddOutputFilterByType DEFLATE image/x-icon 
AddOutputFilterByType DEFLATE text/css 
AddOutputFilterByType DEFLATE text/html 
AddOutputFilterByType DEFLATE text/javascript 
AddOutputFilterByType DEFLATE text/plain 
AddOutputFilterByType DEFLATE text/xml 
</IfModule>

恩金克斯

要在NGINX上启用gzip,必须将以下代码添加到nginx.conf文件中:

gzip on;
gzip_disable "MSIE 1-6].(?![.*SV1)";
gzip_vary on;
gzip_types text/plain text/css text/javascript image/svg+xml image/x-icon application/javascript application/x-javascript;

验证 Gzip 激活

启用 gzip 后,下一步是验证它是否正在压缩出站文件。这是通过使用任意数量的在线工具或通过检查浏览器中的HTTP响应标头来完成的,例如,通过确保在Google Chrome的“网络>标头”选项卡中,Gzip显示在“内容编码”标头下。

此外,还可以通过输入以下命令来使用 cURL](en.wikipedia.org/wiki/CURL) 检查 HTTP 响应标头:

curl -H "Accept-Encoding: gzip" -I https://sitename.com

在响应中,gzip 应列在内容编码标头中:

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 21 Jul 2014 01:12:36 GMT
Content-Type: text/html; charset=UTF-8…
Vary: Accept-Encoding
Content-Encoding: gzip

将 Gzip 与 CDN 结合使用

几乎所有的内容交付网络 (CDN) 都使用 gzip 提供自动文件压缩。这使您无需验证是否确实在进行压缩。

此外,CDN 通常支持许多前端优化技术,这些技术可以与 gzip 结合使用,以进一步缩小传出文件大小。

其中包括缩小,这是一种优化过程,其中从文件代码中修剪空格和重复变量名称等元素,从而可能在压缩之前将其大小减少一半。大多数CDN会自动缩小网站的大部分内容,包括所有JavaScript,HTML和CSS。

虽然在对文件进行 gzip 之前进行缩小可能看起来是多余的,但事实证明,它可以将 tarfile 的大小额外缩小 5-10%。由于 CDN 同时执行缩小和 gzip 压缩,因此它们可以最大程度地减小交付给用户的代码文件的大小,从而显著缩短页面加载时间。