WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

news2024/11/26 7:52:19

今天明月给大家分享一下 WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法的教程,在撰写【WordPress 高级缓存插件 W3 Total Cache Pro 详细配置教程】一文的时候明月就发现 W3 Total Cache 已经支持 Brotli 压缩算法了,可惜的是在安装完 W3 Total Cache 后才发现插件的“浏览器缓存”里有关 Brotli 压缩算法的选项竟然是灰色的无法勾选使用,如下图:

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

这就比较诡异了,明月的服务器对 Brotli 压缩算法的支持可以追溯到很早了(可参考【给 Nginx 添加谷歌 Brotli 压缩算法支持】一文),至少 2018 年在 Nginx 上就已经支持了!

打开 W3 Total Cache 通用设置里的“Compatibility Test”进行兼容性检查才发现竟然是因为没有安装 Brotli extension 造成的(如下图),extension!?php 扩展模块?我去,这可真是个坑呀!

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

速度谷歌、百度脑补了一番发现竟然没有中文的相关讯息,切换到英文模式继续搜索脑补一番终于找到了解决办法,原来 W3 Total Cache 需要的不是 Nginx 对 Brotli 压缩算法的支持,而是需要 PHP 的支持,而 PHP 是从 PHP 7.4 才能支持 Brotli 压缩算法的,需要另外给 PHP 编译增加一个叫“Brotli Extension for PHP”的模块扩展。明月早就说过像 W3 Total Cache 这样高级的缓存插件很多时候都需要配合运维才能更好的发挥性能,这次就需要重新编译 PHP 来增加扩展模块了。

关于编译 PHP 增加扩展模块的原理和需求啥的我就不赘述了,这里仅仅贴出相应的命令行终端里的指令,会使用 Linux 终端的按部就班执行即可,否则就找专业的运维人员给你编译安装好扩展模块吧!

首先,获取 GitHub 上 Extension for PHP 的源码到服务器本地目录进行 PHP 的重新编译安装:

git clone --recursive --depth=1 https://github.com/kjdev/php-ext-brotli.git
cd php-ext-brotli
phpize
./configure
make
make install

此编译会因服务器生产环境配置差异有些出入,像明月的服务器上在执行到./configure这一步的时候就出错了,需要指定php-config文件的绝对路径才可以,如:

./configure --with-php-config=/usr/local/php/bin/php-config

这样指定一下绝对文件路径才能完成编译配置完成编译安装。 所以强烈建议大家找专业人士来完成编译安装工作否则会造成 PHP 毁坏的后果哦。

完成编译安装后会看到“Installing shared extensions:XXXXXXXXXXXX……”的提示即表明Brotli Extension for PHP已经安装好了,只需要在 php.ini 最后添加“extension=brotli.so”的扩展模块引用,重启 php-fpm 即可生效了。

注:因为 Nginx 配置里需要用到 brotli 的配置语句,所以 ngx_brotli 模块也是要有的哦!

这时候我们再进入 W3 Total Cache 插件的“通用设置”里使用“Compatibility Test”进行兼容性检查,可以看到检查结果里 Brotli 扩展已经是绿色“安装”的提示了,如下图:

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

这时候再在“浏览器缓存”就可以勾选“启用 HTTP (brotli) 压缩”了,如下图:

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

然后保存并清理缓存即可生效了。

验证网站前端 Brotli 压缩算法生效,只需要在浏览器里借助开发者调试工具查看网页“标头”里的“Content-Encoding:”值是“br”即表明 W3 Total Cache 缓存插件的 Brotli 压缩算法已经生效成功了。如下图所示:

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

如果没有启用 Brotli 压缩算法则“Content-Encoding:”的值会是“gzip”,与 Gzip 相比,Brotli 压缩在研究中显示出了不俗的成果。例如 Gzip 有 9 个压缩级别,而 Brotli 有 11 个。此外,Brotli 还使用一个预定义的 120 千字节字典,该字典包含超过 13000 个常用单词、短语和其他子字符串。这些因素都有效提高了 Brotli 的压缩率。根据 Certsimple 的研究,用 Brotli 压缩的 Javascript 文件比 Gzip 小 14%,HTML 文件比 Gzip 小 21%,CSS 文件比 Gzip 小 17%。

不过,Brotli 压缩算法要求浏览器必须支持与 HTTPS 一起使用,可能会出现因为浏览器的不支持而导致用户无法访问网站:

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

好巧不巧的,明月就碰到了一个用户因为其手机端浏览器(Google Chrome 移动版)版本过低无法访问,出现“ERR_CONTENT_DECODING_FAILED”无法解码的错误,好在用户升级浏览器到最新版后就彻底解决恢复正常访问了,看来新的技术对老版本的兼容是个不小的问题呀!

WordPress 高级缓存插件 W3 Total Cache 开启支持 Brotli 压缩算法

如果您的网站用户浏览器版本都过低,并且用户群体非 IT 技术型的话,为了保证用户浏览体验,明月是不建议大家强制使用 Brotli 压缩算法的,不过现在不少 CDN 服务(如:Cloudflare、腾讯云 CDN、又拍云 CDN等)都支持自动判断客户端对压缩算法的支持情况让能使用 Brotli 的使用 Brotli,不能的使用 Gzip

就明月的经验来看,使用 WP-Rocket 、W3 Total Cache Pro 这类高级缓存插件的站点首次打开的载入时间是比较快的,这个快是每个浏览用户能切身体会到的,甚至据明月观察会有效的提升网页 Waiting (TTFB)时间)(可参考【优化 WordPress 网站速度需要关注的重要指标:Waiting (TTFB)】一文),记住是首次打开网页的载入时间哦,这对于 SEO 也是有非常好的优势的,所以特别是新上线的站点尤其推荐这些插件的使用,当然再结合 CDN 服务就更加的完美了,而对 Brotli 压缩算法的支持更是锦上添花了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1808907.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录 -数组

1.二分算法 边界开闭 左闭右闭 原则 这里的&#xff0c;middle不是要找的值。那么nums【middle】>tager 我们要更新右边界为middle-1 &#xff08;因为要左区间 所以更新右边界&#xff09; 在这里插入图片描述 class Solution { public:int search(vector<int>&a…

【Python】解决Python报错:IndexError: list index out of range

​​​​ 文章目录 引言1. 错误详解2. 常见的出错场景2.1 循环中的索引错误2.2 错误的列表操作 3. 解决方案3.1 使用安全的访问方法3.2 循环时使用正确的范围 4. 预防措施4.1 编写单元测试4.2 动态检查列表长度 结语 引言 在Python中操作列表时&#xff0c;IndexError: list …

【PowerDesigner】创建和管理CDM之新建实体

目录 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1.1 常用模型文件 &#x1f30d;1.2 PowerDesigner使用环境 &#x1f30a;2. 创建和管理CDM &#x1f30d;​​​​​​2.1 新建CDM &#x1f30d;2.2 新建实体 &#x1f30a;1. PowerDesigner简介 &#x1f30d;1…

初阶 《函数》 2.C语言中函数的分类

2.C语言中函数的分类 1.库函数 2.自定义函数 2.1 库函数 为什么会有库函数&#xff1f; 1.我们知道在我们学习C语言编程的时候&#xff0c;总是在一个代码编写完成之后迫不及待的想知道结果&#xff0c;想把这个结果打印到我们的屏幕上看看。这个时候我们会频繁的使用一个功能…

AVL树 ---(C++)

本篇讲全面的讲解 AVL 树的插入&#xff0c;旋转以及验证 AVL 树的性能&#xff08;本篇未实现删除代码&#xff09;。至于为什么会有 AVL 树&#xff0c;这是因为简单的二叉搜索树并不能直接的保证搜索的效率&#xff0c;因为当我们在二叉搜索树中插入一段有序的序列的时候&am…

SpringBoot 配置事务

SpringBoot 在启动时已经加载了事务管理器&#xff0c;所以只需要在需要添加事务的方法/类上添加Transactional即可生效&#xff0c;无需额外配置。 TransactionAutoConfiguration 事务的自动配置类解析&#xff1a; SpringBoot 启动时加载/META-INF/spring/org.springframewor…

kafka集成spark

1.新建Scala项目 具体教程可见在idea中创建Scala项目教程-CSDN博客 1.1右键项目名-添加框架支持-勾选scala 1.2main目录下新建scala目录-右键Scala目录-将目录标记为-勾选源代码根目录 1.3创建包com.ljr.spark 1.4引入依赖&#xff08;pox.xml) <dependencies><…

Java——二维数组

一、二维数组介绍 二维数组与一维数组很相似。可以说二维数组是元素为一维数组的数组&#xff0c;也就是一维数组的数组。每个元素可以通过行索引和列索引来访问。 1、二维数组的创建 我们知道&#xff0c;在 C 语言中&#xff0c;二维数组是一个连续的内存块&#xff0c;通…

【Python】使用pip安装seaborn sns及失败解决方法与sns.load_dataset(“tips“)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 &#x1f913; 同时欢迎大家关注其他专栏&#xff0c;我将分享Web前后端开发、人工智能、机器学习、深…

RISC-V MCU IDE MRS(MounRiver Studio)开发 编译后打印FLASH及RAM使用占比信息

以RISC-V MCU IDE MounRiver Studio(MRS)为例&#xff0c;首先我们选中目标工程&#xff0c;点击工具栏工程属性按钮&#xff0c;打开工程属性配置页&#xff1a; 在C/C Build->Settings->Tool Settings选项列表中单击GNU RISC-V Cross C Linker->Miscellaneous&#…

Anzo 跟单社区现已正式上线!即刻体验无与伦比的强大功能

Anzo 跟单社区现已正式上线! ANZO 跟单社区是一个颠覆性的创新跟单社区平台&#xff0c;作为新一代跟单社区&#xff0c;我们旨在让更多的用户享受跟单交易带来的便捷性和收益性。交易者可以通过跟单社区&#xff0c;学习和分享交易策略&#xff0c;轻松复制交易专家的交易策略…

人类记忆优化算法:针对全局优化问题的记忆启发优化器

Human memory optimization algorithm: A memory-inspired optimizer for global optimization problems 24年 Expert Systems With Applications sci一区 原文链接: https://doi.org/10.1016/j.eswa.2023.121597 Zhu D, Wang S, Zhou C, et al. Human memory optimization alg…

二进制文件的膨胀策略和使用 debloat 消除膨胀测试

在恶意软件的分析中有的 Windows 可执行文件&#xff08;PE 文件&#xff09;会通过膨胀策略来绕过防病毒一些防病毒的检查&#xff0c;比如上传云进行分析&#xff0c;因为文件太大了所以无法进行一些防病毒分析。一般的可执行文件有很多的膨胀策略&#xff0c;一般简单的膨胀…

Elasticsearch-经纬度查询(8.x)

目录 一、开发环境 二、pom文件 三、ES配置文件 四、ES相关字段 五、ES半径查询 ES的字段类型:geo_point&#xff0c;可以实现以一个点为中心的半径查询(geo_distance query) ES 地里位置查询: 半径查询(geo_distance query)查询指定矩形内的数据(geo_bounding_box quer…

[AI Google] 使用 Gemini 取得更多成就:试用 1.5 Pro 和更多智能功能

总结 Google 正在为超过 35 种语言的 Gemini Advanced 订阅者推出 Gemini 1.5 Pro。此次更新包括 100 万个 token 的上下文窗口、改进的数据分析功能和增强的多模态图像理解。新功能包括用于自然对话的 Gemini Live、先进的规划工具和可定制的 Gems。更新还集成了更多 Google …

基于STM32开发的智能农业监控系统

目录 引言环境准备智能农业监控系统基础代码实现&#xff1a;实现智能农业监控系统 4.1 土壤湿度传感器数据读取4.2 温湿度传感器数据读取4.3 水泵与风扇控制4.4 用户界面与数据可视化应用场景&#xff1a;农业环境监测与管理问题解决方案与优化收尾与总结 1. 引言 随着智能…

SkyWalking之P0核心业务场景输出调用链路应用

延伸扩展&#xff1a;XX核心业务场景 路由标签打标、传播、检索 链路标签染色与传播 SW: SkyWalking的简写 用户请求携带HTTP头信息X-sw8-correlation “X-sw8-correlation: key1value1,key2value2,key3value3” 网关侧读取解析HTTP头信息X-sw8-correlation&#xff0c;然后通过…

Navicat导入json文件(json文件数据导入到MySQL表中)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

在Modelarts上微调量化Llama3,并用docker部署

本文概述 本文先使用llama-factory去微调llama3大模型&#xff0c;然后使用llama.cpp去量化模型并打包为docker部署到服务器上让qq机器人能够调用服务&#xff0c;实现qq群内问答。 效果展示 环境准备 本文使用华为云的Modelarts的notebook去进行的模型微调 ubuntu20.04&#x…

揭开FFT时域加窗的奥秘

FFT – Spectral Leakage 假设用于ADC输出数据分析的采样点数为N&#xff0c;而采样率为Fs&#xff0c;那我们就知道&#xff0c;这种情况下的FFT频谱分辨率为δf&#xff0c;那么δfFs/N。如果此时我们给ADC输入一个待测量的单频Fin&#xff0c;如果此时Fin除以δf不是整数&a…