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

今天明月给大家分享一下 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.mzph.cn/news/851190.shtml

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

相关文章

ctfshow-web入门-命令执行(web53-web55)

目录 1、web53 2、web54 3、web55 1、web53 这里的代码有点不一样,说一下这两种的区别: (1)直接执行 system($c); system($c);这种方式会直接执行命令 $c 并将命令的输出直接发送到标准输出(通常是浏览器&#xff…

【qsort函数】

前言 我们要学习qsort函数并利用冒泡函数仿照qsort函数 首先我们要了解一下qsort(快速排序) 这是函数的的基本参数 void qsort (void* base, size_t num, size_t size,int (*compar)(const void*,const void*)); 简单解释一下 base:指向…

23.在游戏中按下Home键呼出辅助窗口

上一个内容:22.钩子注入原理 在 22.钩子注入原理 它的代码上进行修改 效果图: 首先在CWndMain.h文件中添加下图红框里的东西 ChangeShowState函数的实现 void CWndMain::ChangeShowState() {UiShow !UiShow;ShowWindow(UiShow); } OnInitDialog函数…

CISCN2024 初赛 wp 部分复现(Re)

Misc 1. 火锅链观光打卡 答题即可 Re 1. asm_re 感谢智谱清言,可以读出大致加密算法 这是输入 这是加密部分 这里判断 找到疑似密文的部分,手动改一下端序 #asm_wp def dec(char):return (((char - 0x1E) ^ 0x4D) - 0x14) // 0x50 #return (ord(cha…

powerdesigner各种字体设置

1、设置左侧菜单: 步骤如下: tools —> general options —> fonts —> defalut UI font ,选择字体样式及大小即可,同下图。 2、设置Table的字体大小 Tools------>Display Prefrences------>Table------->Format---------…

RabbitMQ系列-rabbitmq无法重新加入集群,启动失败的问题

当前存在3个节点:rabbitmq5672、rabbitmq5673、rabbitmq5674 当rabbitmq5673节点掉线之后,重启失败 重启的时候5672节点报错如下: 解决方案 在集群中取消失败节点 rabbitmqctl forget_cluster_node rabbitrabbitmq5673删除失败节点5673的…

王学岗鸿蒙开发(北向)——————(十)子组件修改父组件的内容与 动画

子组件修改父组件的内容 使用类似Android的回调,父组件传递给子组件一个函数 import { MyComment } from ./component/MyComment import { MyContent } from ./component/MyComtent import { MyTitleComponent } from ./component/MyTitleComponentEntry Componen…

【MySQL数据库基础】

🌈个人主页:努力学编程’ ⛅个人推荐:基于java提供的ArrayList实现的扑克牌游戏 |C贪吃蛇详解 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 …

【CS.OS】堆管理算法:不同的堆分配和管理算法

1000.5.CS.OS.1.3-基础-内存管理-堆管理算法-Created: 2024-06-09.Sunday10:41 文章目录 1 内存分配算法概述1.1 首次适应(First-Fit)1.2 最佳适应(Best-Fit) 2 伙伴系统(Buddy System) 3 总结References …

Python | 正则表达式

?:标记?之前的字符为可选. used&#xff1f; d可有可无 *:匹配>0个重复的在*号之前的字符。 ab*c 匹配多个b &#xff1a;匹配>1个重复的号前的字符。&#xff08;至少一个&#xff09; {n,m}&#xff1a;匹配num个大括号之前的字符或字符集 &#xff08;n < num …

算法:101. 对称二叉树

对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false提示&#xff1a; 树中节…

ThreadCache线程缓存

一.ThreadCache整体结构 1.基本结构 定长内存池利用一个自由链表管理释放回来的固定大小的内存obj。 ThreadCache需要支持申请和释放不同大小的内存块&#xff0c;因此需要多个自由链表来管理释放回来的内存块.即ThreadCache实际上一个哈希桶结构&#xff0c;每个桶中存放的都…

目标检测(R-CNN)系列(Pytorch 26)

一 R-CNN 除了之前描述的单发多框检测之外&#xff0c;区域卷积神经网络&#xff08;region‐based CNN或regions with CNN features&#xff0c; R‐CNN&#xff09;(Girshick et al., 2014)也是将深度模型应用于目标检测的开创性工作之一。下面介绍R‐CNN及其一 系列改进方法…

架构设计-web项目中跨域问题涉及到的后端和前端配置

WEB软件项目中经常会遇到跨域问题&#xff0c;解决方案早已是业内的共识&#xff0c;简要记录主流的处理方式&#xff1a; 跨域感知session需要解决两个问题&#xff1a; 1. 跨域问题 2. 跨域cookie传输问题 跨域问题 解决跨域问题有很多种方式&#xff0c;如使用springboot…

cefsharp124.x升级125.x(cef125.0.21/Chromium 125.0.6422.142)

一、版本说明 1.1 依赖关系变化 依赖移除:cef.redist.x64,cef.redist.x86增加新支持chromiumembeddedframework.runtime 旧版本需要移除依赖cef.redist.x64和cef.redist.x86否则会初始化异常。 自版本121.*以后common依赖关系变化 chromiumembeddedframework.runtime.win-x6…

CentOS7 配置Nginx域名HTTPS

Configuring Nginx with HTTPS on CentOS 7 involves similar steps to the ones for Ubuntu, but with some variations in package management and service control. Here’s a step-by-step guide for CentOS 7: Prerequisites Domain Name: “www.xxx.com”Nginx Install…

来腾讯第4天,我已经焦虑昏了啊!

大家好&#xff0c;我是白露啊。 今天在看到一个实习生在抱怨&#xff0c;给我笑惨了。 标题是&#xff1a;“腾讯实习第4天&#xff0c;焦虑昏了”&#xff01; 他写道&#xff1a;“怎么办啊牛爷爷们&#xff0c;什么都不会。业务看不懂&#xff0c;文档看不懂&#xff0c;…

【上海大学计算机组成原理实验报告】七、程序转移机制

一、实验目的 学习实现程序转移的硬件机制。 掌握堆栈寄存器的使用。 二、实验原理 根据实验指导书的相关内容&#xff0c;实验箱系统的程序转移硬件机制在于&#xff0c;当LDPC有效时&#xff0c;如果此时DUBS上的值就是转移的目标地址&#xff0c;则此目标地址被打入PC&am…

k8s概述

文章目录 一、什么是Kubernetes1、官网链接2、概述3、特点4、功能 二、Kubernetes架构1、架构图2、核心组件2.1、控制平面组件&#xff08;Control Plane Components&#xff09;2.1.1、kube-apiserver2.1.2、etcd2.1.3、kube-scheduler2.1.4、kube-controller-manager 2.2、No…

U-Mail:企业邮箱系统安全解决方案

在数字化浪潮的推动下&#xff0c;互联网技术正日新月异&#xff0c;企业的信息通信需求亦随之升华。作为企业沟通的重要媒介&#xff0c;企业邮箱已被广泛应用&#xff0c;然而随着其应用范围的不断扩展&#xff0c;也给企业带来了一系列挑战&#xff1a; 一、统一身份认证管…