如果明天有人告诉我,我只能带一个插件去荒岛,我很可能会带Perfmatters,如果我有一个粉丝俱乐部,我会注册并去看他们所有的音乐会。
我从2021年1月开始使用它,它是解决了最多问题的插件之一,也是对减轻加载速度贡献最大、最好的一个插件。
基本的
它是这样一种工具,你甚至不会质疑在年度续费日到来时不付款的微小可能性。顺便说一下,这对于在单个网站上使用是非常经济的。它只需要24.95美元,而且以后的续费有15%的折扣。 因此,从第二年开始就是21.21美元,只需支付21.21美元。
由于我已经单独审查了它的一些功能,所以更深入的分析和设置教程还没有出来。这就是本帖的目的。
关于配置
免责声明:不用说,我添加的开机和关机图标来自我的配置,这是我为这个博客能得到的最好的配置。这并不意味着它是适合你的环境的理想选择。
每个场景都是不同的。你必须研究每个选项,了解它,试验它的行为,并决定什么是最适合你的情况。对于这一点,没有什么比逐一测试你的选择并评估结果更好的了。
另一件要记住的事情是,重复的工具会发生碰撞。 还有其他一些插件,如WP Rocket或与 Litespeed的服务器缓存插件,具有相同的功能,做的事情也完全一样。同时激活它们会导致冲突。你必须评估哪一个最有效,并只坚持使用其中一个。
一般标签
一般选项卡包含最常用的工具。在它们的旁边,你会发现一个链接到它们相应的帮助。不要害怕尝试它们。一切都是可逆的。点击开关将使一切恢复到原来的状态,这里没有发生任何事情。
禁用表情符号
在2015年的WordPress 4.2版本中,在核心中加入了对表情符号的支持,适用于旧的浏览器。
虽然它们不是太重(18KB加上其他JS),但你可以禁用它们,因为它们在你博客的每个页面上都会加载wp-emoji-release.min.jsJavaScript,少一个请求就少一个请求。
禁用破折号
Dashicons是自3.8版本以来WordPress管理的官方图标字体。一些模板通过加载dashicons.min.css CSS在前端使用它。然而,许多现代主题和插件已经使用他们自己的图标、SVG,或者根本没有图标。因此,如果你不使用破折号,你可以禁用它们,因为样式表会增加不必要的加载时间,也会阻碍渲染。
从Perfmatters禁用它们并不影响WordPress管理面板,它使用它们。当你没有登录时,只有前端的破折号会被删除。
禁用嵌入物
当你在编辑器中添加任何来自你的博客的链接时,WordPress会识别它并以这种方式显示(如果你没有改变样式)。
如果你不关心嵌入,你可以禁用它们,减轻一点负担。我没有关闭它们,因为我注意到,当作为段落之间的相关链接时,带预览的链接往往能获得良好的点击率。
嵌入或嵌入是在WordPress 4.4版本中出现的。缺点是它们附带了一个额外的代码,这个代码是通过包括另一个要加载的JavaScript来添加的:wp-embed.min.js。
在你的博客上禁用嵌入,也可以防止其他博客从你的网站上用该预览嵌入链接,然而它删除了oEmbed特定的JavaScript,禁用oEmbed结果的过滤
,删除oEmbed链接发现,也删除了所有嵌入重写规则
。
禁用XML-RPC
XML-RPC是WordPress 3.5中增加的一个协议,允许远程连接,除非你使用WordPress App从移动端发布或编辑你的博客,否则 必须禁用它,因为它构成严重的安全风险。
很少有插件需要它,我只知道有一个插件使用它:JetPack。一个多功能插件,不推荐使用,因为它大大妨碍了性能。
一旦XML-RPCXML-RPC被停用,只需通过访问yourdomain.com/xmlrpc.php来检查其状态,确保它只返回403错误信息。
你也可以在这个检查器中检查。如果你收到这样的信息,这意味着XML-RPC被禁用。
移除jQuery Migrate
它是在WordPress 3.6中引入的,从WP 5.5和更高版本开始不再默认启用。
虽然大多数模板和插件不需要它,但仍有少数模板和插件需要它来实现一些小功能。在我的例子中,有两个插件使用它,Ultimate Membership Pro和Rank Math的统计栏(我不使用),只显示给管理员。一些cookie同意管理插件直到最近仍在使用它。
jQuery Migrate是一个为开发者提供的资源,它允许具有旧的依赖关系的代码与新的代码沟通。
有可能你没有任何插件需要它,所以jQuery Migrate增加了jquery-migrate.min.js的JavaScript的不必要的开销。
不过,在禁用它之前,还是要检查你的插件的文档,或者询问它们的开发者(我们将在后面看到如何为特定的网站禁用它)。
隐藏WordPress版本
这个选项没有什么神秘之处,它只是把你所安装的WordPress的版本隐藏起来,作为一种安全措施,不被人窥视。
这可以通过不同的方式进行,在你更新较晚的情况下非常有用,因为你的版本出现了可能被利用的漏洞,或者核心可能被破坏。至少,通过隐藏版本,你可以使寻找漏洞的攻击者不那么容易。
虽然只删除了一行代码,而且主要是为了安全,但对于优化爱好者来说,这只是又增加了一个要减去的总量的捏。
删除wlwmanifest链接
这是一个出现在每个WordPress安装中的标签,曾被Windows Live Writer使用,它在2017年1月停止更新和支持。
如上所述,这只是不必要的代码,所以少了一行。
删除RSD链接
另一个出现在每个WordPress安装中的遗留标签。
如果你在浏览器中编辑你的网站,你根本不需要它。它也被一些使用XML-RPC请求的第三方应用程序所使用,你应该已经禁用了这些请求。因此,那是不必要的代码要删除。
删除短链接
这是用来为你的页面和帖子创建一个带有数字的短链接,加入这个标签。
<link rel='shortlink' href='https://dominio.com?p=123' />
如果你正在使用 "漂亮的 "短permalinks,如domain.com/%postname%,那么就没有理由保留这个未使用的,更多不必要的代码被扔掉。
禁用RSS提要
WordPress默认会生成不同类型的RSS源。虽然RSS提要对博客仍然有用,但如果你的网站是相当静态的,或者你根本不把它作为一个博客使用,你可以禁用提要。
从RSS订阅中删除链接
就像WordPress生成RSS源一样,它也为你的页面、帖子、评论、类别、标签等生成指向这些RSS源的链接。你可以让你的RSS提要处于启用状态,但仍然可以删除RSS提要链接。这样做的目的是为了从你的页面中删除额外的、很可能是未使用的代码。
禁用自动回放
pingback基本上是一个带有链接的自动评论,当另一个博客链接到你的时候,会在你的博客上创建一个通知。当你在自己的博客中链接到一篇文章时,就会产生一个自动回溯。
现在几乎没有人使用它们,而且你可能收到的外部pingbacks通常是垃圾邮件,只是浪费资源,甚至可能产生恶意的或临时的链接,这些链接被破坏,因此对SEO有害。
就像trackbacks一样,它们属于博客的过去,当时链接作为一种博客哲学是作为网络礼仪的一部分的传统。
禁用REST API
WordPress REST API为WordPress数据类型提供了API端点,允许开发者通过发送和接收JSON对象与网站进行远程交互。
它允许数据与其他网站和用PHP或任何其他语言编写的软件进行交叉引用。
有不同的插件、服务和应用程序使用REST API,根据Perfmatters,这些是其中的一些。
Yoast SEO和Ryte仪表盘小工具,Jetpack,一些联系表格,Wordfence和一些特定的WooCommerce仪表盘小工具。
它也被Gutenberg块状编辑器用来在进行页面和帖子编辑时进行交流。如果你完全禁用它,你会得到一个 "更新失败 "的错误。
Perfmatters提供三种选择。启用(默认),对非管理员禁用,注销后禁用。
移除REST API的绑定
默认情况下,一个REST API链接被包含在类型的头部。
<link rel='https://api.w.org/' href='https://domain.com/wp-json/' />
在每个请求中还会发送一个头,并将一个API标签添加到Really Simple Discovery(RSD)端点。所有这些代码都可以通过激活删除其链接的选项而免去。
禁用谷歌地图
就这样,禁用谷歌地图API。
一些WordPress模板和插件内置了谷歌地图API,而且往往不提供禁用它的方法。即使请求是异步加载的,谷歌地图也会对你的博客的性能造成严重破坏。通常情况下,请求是通过官方的谷歌地图API提出的。
仅仅为了在你的博客上加载一个地图,就可以向谷歌地图发出多达20个HTTP请求。根据整合情况,你可以提出更少甚至更多的要求。
如果你不需要它们,你应该禁用它们。
排除通过邮政ID号停用谷歌地图的情况
然而,如果你别无选择,只能嵌入地图,你可以只对那些需要添加地图的帖子排除停用。要做到这一点,你必须在下面的方框中加入每个帖子的ID,用逗号分隔。
禁用密码强度表
这是在WordPress和WooCommerce的最新版本中引入的。它是一个内置的密码强度表,强制用户使用强密码,并加载几个文件,如:/wp-admin/js/password-strength-meter.min.js和/wp-includes/js/zxcvbn.min.js
zxcvbn.min.js的重量可以超过800KB
如果你使用WooCommerce,该文件有时也在这个路径中找到。
/wp-content/plugins/woocommerce/assets/js/frontend/password-strength-meter.min.js
根据每个模板和开发人员的排队情况,有时这些文件会在整个网站上加载。由于性能原因,它们应该只在 "账户"、"付款 "和 "密码重置 "页面上加载。
如果你在禁用它之后仍然在请求中发现这些脚本,请查阅你的模板文档和任何你认为可能在利用这一功能的插件的文档。
禁用评论
如果你不需要评论,或者你已经决定用最激进的方式来结束垃圾邮件,你可以禁用你的读者评论的选项。评论表会消失。
这是在启用禁用评论选项时,Perfmatters将尝试执行的行动列表。
- 禁用内置的最近评论小部件。
- 移除X-Pingback头。
- 删除评论馈送链接。
- 禁用评论反馈请求。
- 从管理栏中删除评论链接。
- 移除对所有帖子类型的评论支持。
- 关闭评论过滤器。
- 从管理菜单中删除评论链接。
- 禁用内置讨论页。
- 从控制面板中隐藏评论。
- 从个人资料页面隐藏评论设置选项。
- 当要求时,返回一个空白的评论模板。
- 删除评论回复脚本。
请记住,如果你选择柔和的选项,你可以从每篇文章的编辑中取消勾选此框,只关闭对某些文章的评论。
或者从设置/评论,你可以设置它们在一定天数后关闭。
删除评论中的URL
默认情况下,WordPress的评论包括一个网站字段,在评论作者的名字中创建一个非跟随链接(尽管垃圾邮件发送者并不介意这一点)。
如果你不想处理随着时间推移而断裂的链接,评论太少,或者只是想杜绝垃圾邮件,你可以一举删除访客在评论中添加的所有这些URL。
启用这个功能也将从表格中删除URL字段,以便今后发表评论。
添加一个空白的favicon
如果你的网站上已经有一个favicon,你应该把这个选项关闭。
如果你正在创建和测试大量的新WordPress安装,添加一个白色的favicon是很有用的。添加一个空白的图标可以节省你为每个网站上传一个图标的麻烦。另外,如果你忘记了,在速度测试工具中会产生一个404错误。
移除全局样式
从WordPress 5.9开始,增加了额外的内联代码,以加强双色调样式(CSS和SVG代码)。大多数用户可能不会使用这个功能,问题是它在你网站的每个页面上增加了311行(未删减)的代码,这些代码是这样分割的。
在body标签前有196行CSS,115行SVG代码,也被添加到/body标签前。
许多代码使用了!important; 标签,这也是不理想的。
Perfmatters认为这可能是一个bug,所以他们增加了这个选项,作为一个简单的方法来删除所有这些不必要的代码,而它正在被解决。
心跳、评论和自动保存
WordPress Heartbeat API使用/wp-admin/admin-ajax.php来从网络浏览器执行AJAX调用。
这很好,因为它可以保存你的草稿,并防止意外关机导致你的草稿丢失,但它也可能导致高CPU使用率和疯狂的PHP调用。例如,如果你让你的控制面板处于开放状态,它将以固定的时间间隔,每15秒向这个文件不断发送POST请求。你可以将频率提高到60秒,以缓解这种情况。
在第一个选项中,你可以选择何时何地触发它。
第三个选项允许你限制条目的修订次数,以节省空间,例如,如果你设置为10次,只有最后的10次会被保存,以前的会被删除。
最后,你可以为草稿设置自动保存的时间间隔。默认情况下,WordPress每60秒自动保存一次。然而,如果你增加间隔时间,你将不得不更频繁地手动保存,这可以防止你在管理区时浏览器经常崩溃,也可以减少对数据库的写入。
淘宝网
关于WooCommerce的优化选项,我只想说它们的存在,但我将避免任何评论,因为在这所房子里的习惯是不评论任何我不是很清楚的东西,情况就是如此。我在2021年7月卸载了WooCommerce,我几乎不记得任何关于这些优化的反应,所以我请你看他们的文档。
登录网址
另一个有趣的功能是能够改变WordPress在yourdomain/wp-admin中设置的管理区域的默认登录URL。它的作用与普金斯完全一样,如 WPS隐藏登录.
你会发现三个领域。
在第一种情况下,你可以将wp-admin的登录网址改为任何你想要的,如 "yourdomain.com/potato",从而避免暴力攻击和其他攻击,这些攻击通常针对默认网址。只要把它写下来和/或尽量不要让它成为一个有太多字符的奇怪的网址,这样你就不会忘记它(尽管你总是可以通过进入wp_options/perfmatters_options表来检索它)。
第二个字段(Disabled Behavior)设置访客登陆你的域名/wp-admin时将被发送到哪个网址,有三种可能性。
- 信息(默认):显示给访问者的信息。你可以通过在字段中添加任何你想要的文本来定制该信息。 留言.
- 404模板:用户将被送到一个404页面。
- 主页URL:用户被重定向到主页。
资产
这是它变得真正有趣的地方。
脚本经理,锦上添花
Perfmatters脚本管理器无疑是他们最强大和最有用的工具。 仅这一点就值得你为该插件及其支持支付的每一分钱。
它允许你禁用每个插件使用的脚本和CSS,防止它们在文章或页面上加载,在两个地方或整个网站上加载,按登录或注销的用户过滤,按设备过滤,并添加例外,甚至对类别和标签也是如此。
这可以通过消除不使用插件的不必要的请求,如表格或其他东西,大幅提高加载速度(特别是主页)。
强制性使用模式(MU)使脚本管理器更进一步。它提供了更多的控制,并提供了禁用WordPress插件查询和钩子的能力,以及内联CSS和JS。现在,你可以控制一个插件的所有方面,从它的前端脚本、内联代码和MySQL查询,只要你想。
在它的全局视图中,你会发现所有应用的设置,以防有一天你需要重新安排它们,修改它们,添加新的设置或删除一些设置。
它有一个相当完整的文档。如果你不习惯这种工具,一开始可能会被吓到,但只要你一试,就会发现它非常容易使用。
脚本
推迟 和延迟JavaScript。
在每个非关键的JavaScript文件中添加defer属性,可以加快页面的第一次内容绘制(FCP)。这意味着JavaScript在HTML解析过程中被下载,并在页面加载完成后(解析结束后)执行。换句话说,javascript的下载被推到了页面的底部,这样它就在过程的最后完成了。
随着延迟 ,LCP和TBT的结果得到了改善。JavaScript根据用户的互动而延迟,在不需要立即使用的情况下,加速页面的第一次绘画,例如来自第三方的重磅脚本,如谷歌Adsense、谷歌分析、Facebook转换像素或谷歌广告和类似的。
对于这两个选项,你可以添加例外情况,并启用延迟超时行为,这设置了一个超时,如果没有检测到用户互动,10秒后将自动加载脚本。这是可选的,默认情况下是禁用的。
延迟超时
如果你启用这个选项,你就有可能使用这些过滤器之一将延迟超时设置为一个不同的值。
例子中的那个把它设置为7秒。
add_filter('perfmatters_delay_js_timeout', function($timeout) {
return '7';
});
他们建议不要把超时值设置得太短,否则JS延迟功能将无法正常工作。另外,不管超时与否,99%的情况下,所有的东西都会在用户的第一次互动中启动,无论是滚动、点击还是第一次鼠标移动。
CSS
Perfmatters说,解决 "减少未使用的CSS "警告的最简单方法是启用这个功能,我在它还处于测试阶段时审查过它,它能自动完成这一切。开发者声称已经在数百个URL上进行了测试(使用不同的模板和设置),这些是他们声称已经获得的一些结果。
- 平均FCP下降15.20%。
- 平均LCP下降19.66%。
- 平均TTI下降14.95%。
在激活Perfmatters中的 "删除未使用的CSS "功能之前,他们建议删除任何已在Perfmatters中配置的现有CSS预加载(不包括Google Fonts本地样式表)。
不要合并CSS(WP Rocket、Litespeed、Autoptimize等经常做的事情)。自HTTP/2以来,CSS合并是一种过时的优化技术。在某些情况下,组合CSS可能会损害性能(在我的案例中没有),最后要确保你没有试图用另一个插件来删除未使用的CSS。
有三种清除方法。
- 延迟(默认)。所有原始的CSS样式表(未使用的CSS)被延迟,并在用户交互时加载。这是推荐的选项。
- 异步:所有原始的CSS样式表(未使用的CSS)都通过异步加载。这种方法可以帮助避免弹出,因为样式表是在页面加载时异步执行的。这种方法将导致LCP/FCP比延迟行为略高。
- 删除:所有原始的CSS样式表(未使用的CSS)被删除。这是最积极的方法,但也可能需要添加例外情况。建议只针对高级用户。
除了在测试环境中进行试验并测量结果外,这里没有任何秘密,无论是在孤立的情况下还是在与其他功能的互动中。
其中一些功能可以在WP编辑中禁用任何帖子或页面。
编码
一个有用的经典,许多其他插件都包括在内,一些甚至可以手工完成的事情,但它简化和促进了在你的博客的标题、正文或页脚添加自定义代码的操作。
下面的字段直接打印代码到前端,所以它必须是有效的HTML。这包括
它不支持服务器端的语言,如PHP。要添加自定义的PHP代码,建议使用Code Snippets插件。
预装
在预加载中,第一个选项叫"即时页面",它使用instant.page库,在你的网站上本地加载一个不到2KB的小JS文件(instantpage.js),当用户在一个链接上悬停,或在桌面版的图片上悬停时,它被用来预加载URLs。在移动设备上,在用户开始点击屏幕上的链接后,在他们释放链接之前,一个URL就会被预载。
65毫秒后,URL的预加载在后台自动开始。
这个工具相当于Litespeed的"即时点击"和WP Rocket的"预加载链接",所以如果你在这两个插件中使用这个选项,你应该停用它来尝试Perfmatters。
在我的案例中,它比Litespeed中的同等选项效果更好一些,尽管应该注意到在某些情况下它会增加服务器的负载。
与Javascript和CSS选项一样,预加载和预连接的使用应根据你的需要,基于不同的测试来使用。
预装关键图片(折叠上方的图片),是一个仍处于测试阶段的选项,可以帮助减少在Core Web Vitals中绘制大型内容(LCP)所需的时间。
这些典型的图像,如标志、文章中的特色图像、登陆页上的主要图像等。当你预加载它们时,它们会移动到瀑布的顶部,并基本上告诉浏览器它们有优先权,应该立即被加载。
你可以选择零,预装没有(默认选项),和五张图片。Permatters建议最多选择两张或三张,因为Chrome浏览器有两个预装图片的限制,会出现在瀑布的顶部。
懒惰的加载
另一个与性能有关的经典,WordPress从2020年的5.4版本开始就已经原生包含了。
在我的案例中,我使用Litespeed选项,因为在测试中我发现结果稍好,即便如此,Perfmatters的那个选项也非常好用,而且还适用于背景图片的CSS。
字体
另一件好事。这个选项是在.NET的1.7.4版本中添加的。绩效管理于2022年6月7日发布。它允许你通过几次点击在本地托管和加载谷歌字体。
在本地托管字体的好处很多,你可以获得对它们的完全控制权,你可以消除所有这些请求,从而消除加载时间,而且你可以决定如何提供这些字体。
该功能会自动定位你的博客上存在的任何谷歌字体参考,从fonts.google.com下载相应的字体,并将它们托管在你的服务器上的本地目录:/wp-content/cache/perfmatters/your-domain.com/fonts/。
这另一篇文章更详细地解释了它的用途。
CDN
这里没有什么特别之处,也没有什么可评论的。一个工具,添加你使用的CDN总是有用的。由于我使用QUIC.CLOUD,我还不需要它。
分析
虽然我现在不使用它了,因为我开始过渡到Matomo,并将Analytics脚本的管理交给我的RGPD/CCPA cookie同意管理插件,它也能正确地管理它,但我知道它与Perfmatters的工作非常好,因为我当年用过它。
从这里你可以在本地托管谷歌分析脚本。这有助于通过减少额外的DNS查询和解决其脚本的 "利用浏览器缓存 "问题来加快你的网站。
根据Perfmatters的说法,具有讽刺意味的是,谷歌自己的脚本抛出了关于缓存的警告,但这是因为他们的HTTP缓存头过期时间非常短。如果你自己托管,来自你自己的CDN或服务器的HTTP缓存头将被自动应用。换句话说,你获得了对脚本缓存的完全控制。
他们还指出,这个工具没有得到谷歌的正式支持,但已经使用了多年,没有任何问题。
在本地托管谷歌分析,并从自己的CDN或服务器上提供脚本,也可以让你利用单一的HTTP/2连接的优势。