当前位置: 首页 > 教程资源 > Windows 教程 > 正文
Gzip 是什么?如何在 Web 项目中使用 Gzip 压缩

Gzip 是什么?如何在 Web 项目中使用 Gzip 压缩

作者:大眼仔~旭 日期:1周前 (06-09) 评论:0 条

摘要:Gzip 数据压缩软件是跨平台的,在 Web 开发和 Web 项目中被广泛用作首选压缩解决方案。它可以通过命令行工具轻松激活和操作,帮助您节省存储空间并提高系统性能。 Gzip 的工作原理 Gzip 是 “GNU zip” 的简称,它基于免费提供的 Deflate 算法,该算法将 LZ77(Lempel-Ziv 77)…

Gzip 数据压缩软件是跨平台的,在 Web 开发和 Web 项目中被广泛用作首选压缩解决方案。它可以通过命令行工具轻松激活和操作,帮助您节省存储空间并提高系统性能。

Gzip 的工作原理

Gzip 是 “GNU zip” 的简称,它基于免费提供的 Deflate 算法,该算法将 LZ77(Lempel-Ziv 77)压缩方法与霍夫曼编码相结合。通过这些技术,Gzip 文件会扫描重复的数据字符串。如果程序遇到这些重复的序列,就会用对首次出现的字符串的链接来替换它们。这些序列的长度通常限制在 32,000 字节以内。如果一个字符串在前面的 32,000 字节中没有出现过,它就会以未压缩的形式存储在扩展名为.gz 的 Gzip 文件中。

该程序仅限于处理单个文件,因此需要使用打包程序 tar 来创建扩展名为.tar.gz 或.tgz 的所谓 “tarball” 归档文件。默认情况下,在对文件直接应用 gzip 压缩后,原始文件会被删除。不过,您可以使用可选参数 – k 来禁用这种自动删除行为。要解压缩文件,可以使用 gunzip 实用程序或相应的 gzip 命令。

Gzip 的语法和命令概述

尽管不同平台上有图形用户界面可供使用,但当然也完全可以在终端或命令提示符中通过命令使用 gzip。由于 gzip 是为这种使用方式优化的经典命令行工具,即使是初学者也能轻松掌握。一般语法如下:

1
gzip option file(s)

参数不是必需的。如果该字段留空,gzip 会直接使用其默认设置。例如,以下简单命令就足以创建文本文件 example.txt 的压缩版本:

1
gzip example.txt

如果之后要解压缩文件,或者要指定压缩级别、存储位置或处理原始文件的方式,命令中就需要有相应的参数。下表概述了最重要的 gzip 命令:

参数 描述
-1…-9 设置压缩级别(1-9),其中 1 提供最快但压缩率最低的结果,9 提供最佳但最慢的压缩效果;默认级别为 5
-r 递归扫描目录(包括所有子目录)并压缩或解压缩其中的所有文件
-f 强制进行 gzip 压缩,必要时覆盖同名的现有文件
-d 将所选文件解压缩到当前目录
-k 防止删除原始文件
-l 显示压缩文件的压缩比等信息
-c 将压缩文件输出到标准输出(通常是连接到命令行的屏幕)
-q 禁止显示所有 gzip 消息
-t 测试压缩文件的完整性
-h 列出所有可用参数

Gzip 压缩的应用场景

如今,gzip 几乎是平台无关的,并且只要所选项目符合 GPL 许可证,就可以根据需要进行扩展。在 Linux 系统上,压缩工具通常是预装的,或者可以通过软件包管理器轻松获取。gzip 官方网站也提供适用于 macOS 和 Windows 的版本。您可以随时在这些系统上使用该软件来节省存储空间。

另一个关键应用领域是 Web。像 Apache 这样的 Web 服务器多年来一直支持 gzip 压缩,现代浏览器能够解释压缩文件并在渲染网站时对其进行解压缩。这正是 gzip 能够充分发挥作用的地方,因为启用后,Web 服务器会自动压缩上传的内容和服务器上动态生成的网站元素。这可以作为基本的网站优化措施,显著缩短网站加载时间。同时,浏览器在后台处理解压缩,不会消耗额外的带宽。这种性能提升对移动用户尤其有益,还可以间接提高网站的搜索引擎排名。

如何在 Apache Web 项目中使用 Gzip 压缩

Web 服务器通常将 gzip 压缩作为一个模块提供,只需启用即可。如今,许多 Web 托管提供商默认激活此功能,但过去并非总是如此。如果您不确定托管提供商是否支持 gzip 压缩,可以直接联系他们,或者自己进行手动检查。

在 Apache Web 服务器上,您可以使用简单的 phpinfo () 输出来检查模块设置。HTTP_ACCEPT_ENCODING 条目会显示所选的压缩方法,或者是否启用了任何压缩。如果 gzip 可用,您有三种不同的选项来根据需要使用此压缩工具。

选项 1:在.htaccess 文件中启用 Gzip 压缩

使用.htaccess 文件,您可以定义特定于目录的设置,并实时配置 Web 服务器。这之所以可行,是因为该配置文件(通常位于根目录中)会在每次服务器收到请求时自动读取。然而,对于某些 Web 托管提供商,.htaccess 文件可能位于不同的文件夹中、处于隐藏状态,甚至被限制访问。在这种情况下,您唯一的选择是联系托管提供商请求访问权限。如果您能够进行更改,可以通过为 Deflate 算法模块(mod_deflate)添加以下代码到.htaccess 文件中来启用 gzip 压缩:

1
2
3
4
5
6
7
8
9
10
11
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

提示:使用 mod_gzip 和 mod_deflate 模块也需要 Web 主机的权限。

选项 2:通过 PHP 启用 Gzip 压缩

可以使用简单的 PHP 语句激活 gzip 压缩。缺点是必须将代码单独添加到每个 PHP 文件中。因此,只有在您没有编辑.htaccess 文件的必要权限时,才应使用此选项。需放置在每个文件开头的代码行如下:

1
2
3
<?php
ob_start("ob_gzhandler");
?>

选项 3:通过插件实现 Gzip 压缩

除了这两种手动解决方案外,还有一种设置起来只需很少精力的变体:使用内容管理系统的插件激活 gzip 压缩。这些有用的扩展程序主要适用于基于 PHP 的 CMS(如 WordPress),您可以在几分钟内嵌入并根据需要进行调整。以下是该博客软件最受欢迎的三个插件:

  • W3 Total Cache:W3 Total Cache WordPress 插件承诺显著改善网站性能。除了各种缓存机制和专门的移动支持外,这个 SEO 和可用性套件还包括启用 gzip 压缩的选项。
  • WP Rocket:WP Rocket 是另一个经典的 WordPress 缓存插件。它易于使用,从一开始就激活所有关键性能优化功能,包括 gzip 压缩。
  • WP Performance Score Booster:WP Performance Score Booster 插件的活跃安装量已超过 10,000 次。使用此插件,您可以轻松启用 gzip 并有效压缩 Web 项目的内容,包括文本、HTML、JavaScript、CSS、XML 等。

如何在 NGINX Web 服务器上逐步配置 Gzip

如果您使用 NGINX Web 服务器交付网站内容,也可以利用 gzip 压缩来缩短项目的加载时间。为此,您只需配置 ngx_http_gzip_module。默认情况下,用于启用或禁用压缩服务的 gzip 指令是关闭的。

要更改此设置,请打开主配置文件 nginx.conf 并找到 gzip 指令。将 gzip off 替换为 gzip on。下表解释了 NGINX 中用于配置 gzip 压缩的一些其他指令的用途和选项:

命令 语法 默认设置 描述
gzip_buffers gzip_buffers number size; gzip_buffers 32 4k|16 8k; 定义压缩过程中使用的缓冲区的数量和大小
gzip_comp_level gzip_comp_level level; gzip_comp_level 1; 设置压缩级别;取值范围:1 – 9
gzip_min_length gzip_min_length length; gzip_min_length 20; 指定要压缩的文件的最小长度(以字节为单位)
gzip_http_version gzip_http_version version; gzip_http_version 1.1; 指定压缩响应所需的最低 HTTP 版本
gzip_types gzip_types content-type; gzip_types text/html; 确定应压缩的内容类型(例如 CSS、JSON、XML)

如何测试 Gzip 压缩

为网站配置 gzip 压缩后,您可以使用各种工具来验证其是否正常工作,以及 Web 服务器是否在响应客户端请求时提供压缩内容。为此,最推荐的工具之一是 Google PageSpeed Insights。只需输入网站的任何页面,该工具就会自动分析其内容,并提供有关页面性能优缺点的报告。在结果中,您会找到有关是否启用 gzip 压缩的信息。

或者,您可以使用 WhatsMyIP.org 上的 HTTP 压缩测试来快速测试 gzip。

声明:大眼仔旭 | 本文采用署名-非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
文章名称:《Gzip 是什么?如何在 Web 项目中使用 Gzip 压缩
文章固定链接:https://www.dayanzai.me/what-is-gzip.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
转载声明
全部评论: (0条)
^_^ 暂无评论!

发表评论

返回顶部