携手创作,共同成长!这是我参与「掘金日新计划 · 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].(? 检查 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 压缩,因此它们可以最大程度地减小交付给用户的代码文件的大小,从而显著缩短页面加载时间。