Wordpress插件 | 使用Autoptimize优化网站访问速度

Autoptimize插件可以让站点在Google PageSpeed Insights测试中获得更高的分数,更高的分数通常代表更快的网站访问速度和更好的用户体验。与之类似的WP Minify Fix和Better WP Minify插件也不错,不过需要付出更多的努力让站点不报javascript错误,用户界面也稍显复杂。

简单的用户界面

Autoptimize的UI设计比较简洁,默认展示给用户的是简单选项,一路点优化就好。如果你的站点代码规范,javascript事件在DOM加载完成后执行,外链js文件的依赖关系正确,css文件没有各种错误,这些简单选项就能让你获得更好的Pagespeed得分。

Autoptimize-options

Eliminate render-blocking JavaScript and CSS in above-the-fold content

这是Pagespeed测试里大部分网站都会被提醒的东西,如果满足了这一条,可以很好的提高分数和实际用户体验。我们的Autoptimize插件正好提供了这一项功能,这是其他minify插件缺失的东西。

点击Show Advanced Settings按钮展开隐藏选项,找到inline and Defer CSS这一项。按照谷歌的说法,你应该在这里输入above-the-fold content的样式.

Above-the-fold content是指用户打开你站点时首先看到的部分。既然用户开始只能看到这一区域,那么其它区域的样式有没有加载就不那么重要了,先把这个区域渲染完,其它样式慢慢加载。

inline-css

现实是这样做确实能提升用户体验,让用户更快的看到你站点开始加载。至于原因,可以这样形象的理解

  1. 负责内容的DOM要去见访客,这时Javascript蹦出来说它也要去,让DOM等一下。
  2. 而负责样式的CSS必须与Javascript同行。
  3. 结果访客只能望穿秋水,等着CSS加载完、Javascript执行完,最后才等到姗姗来迟的DOM。

实际情况比这个要复杂,但简单的说访客要看的就是网页内容(DOM),javascript和css并不是必须的,如果让javascript异步加载,不那么重要的css延迟加载,那看到网页内容的时间就会提前很多,即使网页总的下载时间不变,访客的也会感觉网站好像打开的快了。

可以借用谷歌的一张图来说明这个问题

critical-rendering-path

  • 给script标签添加async或者defer属性,可以eliminate render-blocking JavaScript 
  • 将重要的css用style标签在head里输出,用javascript输出原本的link标签,可以eliminate render-blocking CSS 

async和defer的区别是执行脚本的时间不同,具体可以看这篇文章的解释。

如果想详细了解这方面的内容,可以搜索有关critical rendering path的内容,推荐谷歌的介绍:
https://developers.google.com/web/fundamentals/performance/critical-rendering-path/

Above-the-fold content的残酷现实

对静态站和不太复杂的动态站来说,这个方法很好。到WordPress这里就郁闷了,并不是每个页面头部都长一个样,不同的设备最先看到的内容也不一样,导致Above-the-fold content的样式很难定义,要是网站样式经常变就更别提多麻烦了。所以这种方法可能不适合非常复杂的站点,但不代表它没有用处。

对我来说,与其考虑Above-the-fold content的样式,不如考虑哪些css是渲染网页所必须的(critical css)。比如每个页面都有的layout、header、footer、menu这些。而WP Caption、 WP Gallery、alighment的样式以及某个模板特有的样式,完全可以延迟加载。带着这个想法开发站点,相信会有所帮助。

如何使用Inline and Defer CSS” Option

简单的说,请使用Critical Path CSS Generator这个工具。
详细的说,请看文章How to Use the Autoptimize “Inline and Defer CSS” Option

Pagespeed分数和用户体验

得分和用户体验并不能完全划等号,你只需要满足google的要求就能获得好的得分,但现实世界的情况要复杂的多,你要面对很多恼人的问题,比如:

1. 只在某些页面加载的js和css文件

Autoptimize会压缩当前页面里所有的js和css,甚至inline的样式和脚本。当每个页面的状况都不相同时,就会产生很多缓存文件,比如用户访问首页时下载了style-1.css,访问次级页面时因为多了一个尽在该页面加载的css,就要重新下载style-2.css,这两个文件大部分内容是重复的。

用pagespeed测试时两个页面都可以获得相对较好的分数,但实际上用户的浏览器缓存没有发挥应有的作用,这不是一个好的体验。

2. 异步加载脚本导致网站出问题

这是使用minify插件最容易出现的错误,不排除是站点写的有问题,但至少说明不管三七二十一全部合并压缩不是个很好的方法。

幸好Autoptimize不是一刀切的,还提供了一些变通方法。

仔细阅读Autoptimize的FAQ

地址是这里https://wordpress.org/plugins/autoptimize/faq/,插件作者经常辛苦的写了一堆说明却发现用户还在不停的问同样的问题。这个FAQ提供了很多有用的信息,比如

1. 禁止压缩inline javascript

1
2
3
4
add_filter( 'autoptimize_js_include_inline' , 'readme_ao_js_include_inline' ,10,1);
function  readme_ao_js_include_inline() {
     return  false;
}

2. 禁止压缩inline css

1
2
3
4
add_filter( 'autoptimize_css_include_inline' , 'readme_ao_css_include_inline' ,10,1);
function  readme_ao_css_include_inline() {
     return  false;
}

我发现这条尤其有用,因为很多inline的css是某个页面特有的样式,为了这点样式重新生成一份超级样式表毫无意义。

3. 排除css和js文件

只在某个页面加载的脚本和样式可以从minify里排除,高级选项Exclude scripts from Autoptimize和Exclude CSS from Autoptimize提供了排除功能。

  • 如果你不想合并“wp-content/plugins/funkyplugin/css/style.css”,你可以填写“funkyplugin/css/style.css”
  • 如果你想排除某个插件下的文件,可以填写“funkyplugin/js/”或者“plugins/funkyplugin”

扩展阅读

https://developers.google.com/web/fundamentals/performance/critical-rendering-path/

https://varvy.com/pagespeed/critical-render-path.html

http://www.webpagetest.org/

提到WordPress提速插件,相信很多朋友都会想起WP Super Cache插件,它是一款不错的插件,提速插件在一定程度上帮助我们提升网站的速度,所以,网上也有很多的WordPress爱好者,在不断的开发这类插件,今天,就来介绍一款提速插件AutoptimizeAutoptimize插件的官方评价这款插件的特点是: •整合所有的脚本和样式表并将之缩小和压缩 •添加有时限header缓存 •优化缩小HTML代码 同时作者还推荐此插件和WP Supser Cache插件一起使用会获得最佳的效果。 Autoptimize插件安装: 1.下载Autoptimize插件,将压缩包解压后,把文件夹上传到wp-content/plugins/目录下。 2.登录WordPress管理后台,点击“Plugins”找到上传的插件,激活该插件,即可。 3.激活插件后,在"Setting"--->"Autoptimize",进入如下页面(点击图片,查看大图): 页面的内容十分的简单,也没有相信中的复杂,勾选你想要优化的内容(所有的选择在上图中都有介绍),就可以了。 这里需要注意的是:Autoptimize插件会自动在它插件目录下的Cache文件夹中储存经过优化的缓存数据,如果你页面使用的是不同的样式表,就可能会导致文件夹变大,那么,你就需要启用只在<head>中寻找样式表了。在对页面的CSS样式优化的过程中,如果出现了页面或者某些插件不能正常工作,那么,就请你禁用相关的优化选项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值