本文包含有关 GZIP 压缩、其定义、WP Rocket 如何应用它、故障排除以及服务器管理指南的信息
GZIP 压缩的工作原理
GZIP 压缩可以压缩 HTML、CSS 和 JS 内容,从而使从服务器发送到访问者浏览器的文件更小。文件大小越小意味着下载速度越快,从而缩短页面的整体加载时间。这里有深入的解释。
注意: GZIP 压缩只能应用于从您自己的域提供的文件,而不能应用于来自第三方(Facebook、Google 等)的文件
WP Rocket 如何应用 GZIP
在 Apache/LiteSpeed 服务器上,WP Rocket 使用mod_deflate模块自动在 .htaccess 文件中添加 GZIP 压缩规则。这些是我们添加到您的 htaccess 文件中的规则:
# Gzip compression
<IfModule mod_deflate.c>
# Active compression
SetOutputFilter DEFLATE
# Force deflate for mangled headers
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
# Don’t compress images and other uncompressible content
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png|rar|zip|exe|flv|mov|wma|mp3|avi|swf|mp?g|mp4|webm|webp|pdf)$ no-gzip dont-vary
</IfModule>
</IfModule>
# Compress all output labeled with one of the following MIME-types
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE application/atom+xml \
application/javascript \
application/json \
application/rss+xml \
application/vnd.ms-fontobject \
application/x-font-ttf \
application/xhtml+xml \
application/xml \
font/opentype \
image/svg+xml \
image/x-icon \
text/css \
text/html \
text/plain \
text/x-component \
text/xml
</IfModule>
<IfModule mod_headers.c>
Header append Vary: Accept-Encoding
</IfModule>
</IfModule>
<IfModule mod_mime.c>
AddType text/html .html_gzip
AddEncoding gzip .html_gzip
</IfModule>
<IfModule mod_setenvif.c>
SetEnvIfNoCase Request_URI \.html_gzip$ no-gzip
</IfModule>
因此,GZIP 压缩工作需要满足 2 个要求:
- 必须在服务器上启用 mod_deflate (询问您的主机商是否支持)。
- 必要的规则放置在服务器配置文件.htaccess 文件中,该文件位于站点的根目录中。
CSS/JS/HTML 已预先压缩
当 WP Rocket 为每个页面创建缓存文件时,它会创建 2 个版本 – HTML 文件和 GZIP 文件。通常会提供 GZIP 版本,但 HTML 版本可作为后备。
当应用文件优化时,例如缩小/组合 CSS 和 JS,WP Rocket 还会为每个文件创建 2 个版本,但不会自动提供它们。
有关此功能的更多信息,请参阅本指南。
您的服务器必须具有PHP 中可用的gzencode函数。
对“启用压缩”警告进行故障排除
- “使用 GZIP 压缩组件” – Pingdom
- “启用文本压缩” – PageSpeed / Lighthouse
- “启用压缩”- GT Metrix
- “压缩组件”-Yslow
- Pingdom 不提供正在标记的特定文件的列表,因此如果您使用的是该列表,请使用 GT Metrix 或 PageSpeed 重新运行测试。
- 然后单击消息将其展开并查看正在标记的文件列表。
- 列出的文件是否托管在您的域中?
如果文件是外部的,即不是从您自己的域提供的,则您无法优化它们。您可以在这里找到更多相关内容:处理外部资源
如果引用的文件托管在您的域上,请检查以下各项: - 您的网站使用 htaccess 文件吗?
如上所述,WP Rocket 在 htaccess 文件中添加了 GZIP 规则。请咨询您的房东,看看是否:- 您的网站使用 htaccess 文件。如果是,请检查文件以确保上面的规则存在
- 服务器上启用了Mod_deflate
- 文件大小是多少?
某些服务器具有默认的最大和最小压缩文件大小。如果文件非常大或非常小,则可能无法压缩。 - 并非所有组件都应该被压缩
例如,非常小的文件不会从压缩中受益,并且某些文件类型不应被压缩。
HTML 未经过 GZIP 压缩
在某些特定的服务器配置中,所有静态资源都将被正确压缩,但您可能会收到专门关于 HTML 文档未压缩的警告。
有两种可能性可以解决这个问题:
1. 确保缓存由我们的htaccess 重写规则管理:
- 禁用移动设备的单独缓存文件 (大多数具有响应式主题的网站不需要这样做)
- 禁用用户缓存
2. 如果上述配置不可行(有时为了兼容性而删除我们的 htaccess 重写),请尝试在您的服务器上启用zlib 压缩:
将以下指令添加到 WordPress 根目录中的 user.ini 或 php.ini 文件中:
zlib.output_compression = On
不要忘记事后检查您的网站!
服务器管理
如果您运行自己的服务器,这里有一些关于应用 GZIP 压缩所需的指南。请注意,我们无法为修改您的服务器配置提供支持。
阿帕奇/LiteSpeed
如果您运行专用的 Apache/LiteSpeed 服务器,您可以通过执行以下命令行来激活
a2enmod deflate
然后重新启动服务器:
service apache2 restart
NGINX
Nginx 不使用 .htaccess。要在 NGINX 上启用 GZIP,您可以遵循以下指南:
easyengine.io/tutorials/nginx/enable-gzip/
或者您可以使用我们的客户之一提供的 NGINX 替代配置:
github.com/maximejobin/rocket-nginx
IIS-Windows
IIS 服务器不使用 htaccess 文件。必须在服务器配置级别启用 GZIP。您可以按照本指南在 IIS 服务器上启用 GZIP:
docs.microsoft.com/en-us/iis/extensions/iis-compression/using-iis-compression

发表回复