PageSpeed Insights 未使用被动式监听器来提高滚动性能的警告的解决办法
文 / @WordPress主题
关于优化WordPress滚动性能的建议
小本本这里想和大家分享一下关于优化WordPress站点滚动性能的建议。当我们使用PageSpeed Insights测试我们的WordPress站点的使用时,如果前端已经加载了jQuery库,我们通常会收到一条“未使用被动式监听器来提高滚动性能”的警告。那么,该如何操作呢?
为什么会出现未使用被动式监听器的警告?
在浏览器渲染网页的过程中,默认情况下,浏览器会主动监听绑定到触摸和滚动事件,根据该事件的运行结果和是否阻止浏览器的默认行为来判断是否执行默认操作。比如我们可以在触摸事件调用preventDefault
,这时,浏览器会禁用该事件的默认操作,不会滚动或缩放。
而浏览器无法预先知道一个监听器会不会调用preventDefault()
,它需要等监听器执行完后,再去执行默认行为。而监听器执行是要耗时的,这样就会导致页面卡顿。如果我们把监听器的监听方式改为被动的,就可以消除掉这个延时,提高网页的触摸和滚动性能。更深入的解释可以点击移动Web滚动性能优化:Passiveeventlisteners。
如何实现被动式监听器来提高滚动性能?
截止到本文发布之日,WordPress内置的jQuery还没有支持这个操作。但是,我们可以通过一段简单的代码来为jQuery加上这个支持。如果您的网站中没有使用jQuery,依然出现了未使用被动式监听器来提高滚动性能的警告,可以参考以上代码中的this.addEventListener
部分修改您的代码,来实现被动式监听。
<?php
add_action('wp_enqueue_scripts',function()
{
wp_add_inline_script('jquery','
jQuery.event.special.touchstart={
setup:function(_,ns,handle){
this.addEventListener("touchstart",handle,{passive:!ns.includes("noPreventDefault")});
}
};
jQuery.event.special.touchmove={
setup:function(_,ns,handle){
this.addEventListener("touchmove",handle,{passive:!ns.includes("noPreventDefault")});
}
};
jQuery.event.special.wheel={
setup:function(_,ns,handle){
this.addEventListener("wheel",handle,{passive:true});
}
};
jQuery.event.special.mousewheel={
setup:function(_,ns,handle){
this.addEventListener("mousewheel",handle,{passive:true});
}
};'
);
},999);
尽管这个警告不会直接影响PageSpeed Insights的评分,但是解决掉这个延时后,对提高网页的用户体验还是有一些帮助的。
相关文章
-
如何创建WordPress古腾堡编辑器的区块(PHP+原生JS) 2024-01-10 01:01:06
-
搭建一个WordPress网站需要多少成本 2023-11-06 00:09:51
-
Symlink介绍(附:如何使用Symlink进行WordPress开发) 2023-11-05 23:38:32
-
让WordPress实现数据库同步的插件:HyperDB 2023-10-24 23:40:49
-
allegro电商平台值得做吗(附:2023年Allegro注册流程指南) 2023-10-08 21:53:39
-
印度跨境电商平台有哪些(附:印度跨境电商做什么产品好) 2023-10-08 21:34:23
-
跨境电商必看的几大海外二手电商平台 2023-10-08 18:04:42
-
WordPress同城互联网产品解决方案:UBASE 2023-10-03 16:40:39
-
WordPress网站的安全插件:wordfence 2023-09-14 09:25:18
-
WordPress 6.3 支持在手动更新插件和主题失败后回滚旧版本 2023-08-28 16:58:45