目录
一、网站速度测试
测试网站的速度不能仅看自己电脑打开网站的速度,因为网站的访客通常来自五湖四海,所以我们需要通过第三方专业的工具来进行测试。
网上有不少在线测试网站速度的网站,利用这些网站就能测试不同地区打开网站的速度。测试的时候不妨多测试几次,以获得更准确的测试结果,特别是在您网站使用了 CDN 的情况下。
国内测速
国内的测速网站可以测试不同城市服务器连接网站的速度,但是不会告诉您加载资源的具体数据,以及优化建议。
国外测速
国外的知名测速网站有 Google PageSpeed Insights、GTmetrix、Pingdom 等,可提供详细的测速报告,以及优化建议。如果您的网站加载速度较慢,可通过这些测速网站来查找原因。
我的网站在 Pingdom 上的评分只有 C,但是 Load time 却很低,表明加载速度还是很快的。主要原因有两项,Pingdom 认为我的网站没有使用 Gzip 压缩,但是实际上我通过 Cloudflare 使用了更先进的 Brotli 压缩;此外由于 Cloudflare 免费版并不支持 cookie-free,所以也减分不少。
所以,有时候我们并不需要太极致的优化,对于测速网站的建议,我们只需要根据自己实际情况调整即可。只要总体加载速度够快,对于细枝末节的优化,简单的就做一下,影响不大却又难以实现的,就没必要斤斤计较。
二、购买一台快速且稳定的服务器
服务器的重要性就不同多说了,一台好的服务器是一切优化的基础。
在选择服务器的时候,建议大家首选大厂商,不要一味的追求性价比,速度和稳定才是第一要务。小厂商确实有时候会有性价比不错的主机,有些速度也很不错,但是往往稳定性就很不如意。
我曾经用过不少主机,从小厂商到中型厂商都试过。小厂商就不说了,宕机频繁,在网站还没有盈利时我就决定弃用了。后来用了一个中型厂商的主机很不错,性价比极高,但是一年也会来几次宕机或者停机更新。每一次宕机对网站的伤害都是极大的,直接的经济损失就不说了,万一被搜索引擎降权那就是毁灭性的。
选择服务器之前,大家要先想好备案的问题。如果访客主要在国外,那就选择国外的服务器,可以免备案快速开通。如果访客主要在国内,那么能备案尽量备案,因为网站发展到一定程度,有些事情需要备案才能办,例如使用国内的 CDN。
1,阿里云(备案)
网址:https://www.aliyun.com(优惠券)
阿里云是国内云计算的先驱,在国内市场,占领了半壁江山。在国际云计算市场,阿里云也占据第三位,仅次于亚马逊 AWS 和微软 Azure,第四和第五位分别是 IBM 和谷歌云。(参考知乎:阿里云真的国内云计算第一吗?这是阿里领先百度和腾讯的地方吗?)
我已使用阿里云 ECS 服务器超过一年,目前在线率 100%,从未出现过任何问题。无论是连接速度还是稳定性都无可挑剔。所以在续费的时候我直接续了 3 年(续费年限越长,优惠越多,一年 ¥1477.88,三年 ¥2608.02)。
日常资源使用情况:
由于开始建站的时候比较急切,所以我使用的是香港节点的主机,免除了备案的麻烦。但是这导致不能全站使用国内的 CDN,我只好另外备案了一个域名做动静分离。因此我需要额外做了许多优化工作,才能让网站在国内达到理想的访问速度。如果能够全站 CDN 加速,我的网站速度还能提升一个台阶。
我目前使用的服务器方案是“共享计算型 n4(ecs.n4.small)”,1 核心 CPU,2 G 内存,SSD 20G 云盘。每天应付数千流量毫无压力(有使用 CDN + OSS 做动静分离)。
如果您是建站新手,还可以选择“轻量应用服务器”。这种服务器的好处是即买即用,您不用再手动安装 WordPress 的各种服务器环境,只要购买时选择 WordPress 镜像即可。
轻量应用服务器的最低配置是 1 核 1 G、20 G SSD 云盘、1 兆带宽,价格 ¥60 元/月,¥612 元/年。
阿里云经常有各种各样的活动,购买之前记得先查看一下最新优惠活动页面,新用户经常都有很低的折扣,甚至低至 1 折。
2,SiteGround(免备案)
SiteGround 是美国最受好评的知名服务器商,在 Facebook 上众多讨论小组的主机民意调查中屡获第一。
同时也是 WordPress.org 官方推荐的主机。
SiteGround 提供很多简化 WordPress 网站管理的工具:一键安装,托管更新,WP-Cli,WordPress staging(预备测试环境) 和 git 集成。使 WordPress 的加载速度更快:基于 NGINX 的缓存,SSD 硬盘,PHP 7,CDN,HTTP / 2。 而且还可以主动保护 WordPress 网站免受黑客攻击。
目前 SiteGround 提供三种 WordPress 主机方案,首次购买会有很大的折扣,续费时按正常价格要贵许多,所以建议直接购买 3 年。
最低价格 StartUp 方案仅需一个月 $3.95 美元。提供:WordPress 一键安装、免费 SSL 和 HTTP / 2、免费每天备份、WordPress 自动更新、免费 CloudFlare CDN、免费电邮等等服务。
关于 SiteGround 的详细介绍请参考此文章:
SiteGround-排名第一的国外 WordPress 专用主机
三、升级到 PHP 7+
有很多人会遗忘掉自己服务器使用的是哪个版本的 PHP,特别是那些经营多年的网站,可能依然在使用 PHP 5。但是实际上您仅需简单的升级一下 PHP 版本,您的网站速度可能就可以提升 2-3 倍。
WordPress 5.3 PHP benchmarks ▼
大多数情况下,主机商不会主动帮您更新 PHP 版本,因为您的主题或者插件可能不兼容,所以您需要自己来执行更新。这也导致很多人忘记了这一茬。如果您已经使用一台主机多年,那么是时候检查一下您的 PHP 版本了。
第 1 步:进入 WordPress 网站后台,在“工具”→“站点健康”中就能查看 PHP 版本。如果没有提示,代表 PHP 版本已经是最新的了。
第 2 步:安装 PHP Compatibility Checker 插件,检查新的 PHP 版本是否与主题/插件冲突。
第 3 步:进入服务器控制面板(如:Plesk、Cpanel、宝塔面板),通常都有提供不同 PHP 版本选择或者安装,升级至最新版本即可。如果你的主机商没有提供面板,可以联系客服升级。
Plesk ▼
四、安装缓存插件
缓存插件是提升 WordPress 网站速度的一把利器,效果立竿见影。缓存插件除了加速外,还能减轻服务器负担,节省资源,实在是居家旅行、杀人灭口,必备良药!
缓存插件的作用是,把 Wordpress 的网站页面生成静态的 html 文件,当用户访问时,就不用再解析 PHP 脚本,并减少数据库的查询,从而提升网站速度。
WordPress 的缓存插件有很多,知名的有以下这些:
在 Facebook 上的一些民意调查中,WP-Rocket 是排名第一的缓存插件。
但是它是一款收费插件,而且还不便宜,每年 $49 美元,但是经常有低至 5 折续费优惠。
WP-Rocket 不仅仅是一款缓存插件,它还内置很多优化功能,例如:HTML、CSS 和 JS 的压缩和整合,优化数据库,DNS 预读取,CDN 整合、Heartbeat control、Lazyload、WebP 等等。
从我建站开始不久就一直使用 WP-Rocket,对其优化效果和稳定性都极其满意。它功能丰富,设置简单,节省了我很多优化工作时间,物有所值,极力推荐。
WP-Rocket 毕竟是收费的,对于大多数人来说还是倾向于使用免费插件。大家可以根据自己的需求来选择其他插件。
WP Super Cache 是 WordPress 官方出品,知名度很高,兼容性比较好,设置虽不简单,但也不太复杂。W3 Total Cache 虽然功能丰富,但是设置异常复杂,适合喜欢折腾的人,不建议使用。WP Fastest Cache 是后起之秀,设置简单,建议使用。
这些免费缓存插件我都使用过,但是与 WP-Rocket 相比还是差强人意,总会有各种莫名的问题或者功能缺失,建议配合 Autoptimize 一起使用。
五、定期清理数据库
WordPress 经过一段长时间运行后,数据库里会产生许多垃圾内容,例如:文章修订版本和草稿、垃圾评论、插件生成的临时数据、trackback 和 pingback 数据等等。时间久了,数据库将变得臃肿,降低网站运行速度。所以定期清理数据库时很有必要的。
您可以使用 WP-Optimize 插件来完成这些工作。注意:在清理和优化数据库时会直接修改数据库,所以务必在操作之前先备份数据库(推荐使用 UpdraftPlus 插件备份),以防万一。
如果您已经购买 WP-Rocket,就无须安装此插件,WP-Rocket 已经集成这些功能。
六、心跳控制(Heartbeat Control)
Heartbeat(心跳检测)是 WordPress 的一项功能,当您登录 WordPress 管理面板时,它可以在服务器和浏览器之间提供实时通信。它使用文件 /wp-admin/admin-ajax.php 从浏览器运行 AJAX 调用。默认情况下,AJAX 请求在文章编辑页面上每 15 秒发送一次,在仪表板上每 60 秒发送一次。
但是 Heartbeat 并非是必要的,通常需要使用到它的一些功能是:自动保存、文章修订、仪表盘实时提醒、文章锁定(多人同时编辑)、某些需要在仪表盘上显示实时数据的插件。
您可以使用 Heartbeat Control 插件来禁用此功能。
七、Lazyload(懒加载)
相信很多人都知道什么是 Lazyload,如果您的网站文章存在大量图片,那么使用 Lazyload 就能大大提升页面加载速度。例如微信公众号、知乎等网站都有使用 Lazyload 功能。
网上一直都有讨论 Lazyload 对 SEO 的影响,最主要的问题是导致搜索引擎无法索引图片。我的看法是,搜索引擎本来对图片的识别能力就有限,文章排名的好坏主要还是看文字内容和其他排名因素,图片的索引与否对文章的排名影响微乎其微。
所以如果您的网站不是图片分享型的网站,而且网站使用了大量图片,我建议还是尽量使用 Lazyload。
Lazyload 还有一个问题,如果您的文章中带有目录,因为图片只有在看到时才加载,导致点击目录无法准确定位。如果您像我一样使用的是目录插件,那么只要把“平滑滚动”选项去掉就可以了。
Lazyload 并不是什么复杂的技术,很多缓存插件或者图片优化插件都附带此功能,或者您可以单独安装一个 Lazyload 插件 – 使用人数最多的 a3 Lazy Load 插件。
八、缓存或禁用谷歌字体
在编辑文章的时候,WordPress 后台会自动加载谷歌字体,由于众所周知的原因,国内是无法加载谷歌服务器资源的,因此导致后台加载速度很慢,甚至无法打开。如果您使用的是国外开发的 WordPress 主题,也有可能使用了谷歌字体,导致国内打开速度很慢。
通过 Chrome 的开发者工具可以看到,谷歌这些字体的域名通常是 fonts.gstatic.com,或者 fonts.googleapis.com,并以 woff 或 woff2 结尾。▼
由于 WordPress 在 2019 开始启用了古腾堡编辑器,网上很多禁用谷歌字体的代码已无法使用。下面是最新可用的代码,将以下代码添加至 WordPress 主题的 functions.php 里面就行了。
// 禁用 WordPress 后台古腾堡编辑器加载 Google 字体
function Disable_Google_Fonts($translation, $text, $context, $domain)
{
if($context != 'Google Font Name and Variants' || $text != 'Noto Serif:400,400i,700,700i') {
return $translation;
}
return 'off';
}
add_filter( 'gettext_with_context', 'Disable_Google_Fonts',10, 4);
上面的代码只能解决后台的问题,对于前台(主题)是无能为力的。网上有很多使用代码或者插件的解决方案,但是由于不同的主题可能需要使用不同的代码,逐一测试很麻烦,而网上推荐的很多插件又失效了。
经过一番查询后,我找到以下一些办法:
在 WordPress 后台通过关键字“Google Fonts”来查找插件,如果有保持更新的插件那就可以尝试使用。目前我找到的一款插件是:Disable and Remove Google Fonts。
此外,您还可以安装 Autoptimize 插件,此插件有禁用或缓存谷歌字体的功能。Autoptimize 同时也是一款很优秀的 WordPress 优化插件,非常值得推荐使用。
或者还可以使用 OMGF | Host Google Fonts Locally 插件,把 Google 字体托管到本地。
九、使用 CDN 加速
使用 CDN 加速是提升网站速度最立竿见影的方法,建议有条件的都务必使用。
CDN 不仅能大幅提升网站访问速度,还能隐藏服务器真实 IP,提高服务器安全,降低服务器资源消耗,可谓一举多得。
1,已备案网站
已备案的网站通常访问对象在国内,所以理应购买国内的 CDN 服务。推荐使用阿里云 CDN,价格仅需每天每兆流量 0.54 元(按量付费)。
阿里云 CDN 可以流量包的形式购买,最低价格一年 ¥20 / 100 G(日流量 1 千左右的网站已经够用了)。如果是 https 网站,需额外购买 https 请求包,价格一年 ¥40 / 1000 万次。
购买地址:https://www.aliyun.com/product/cdn(购买前记得先领取代金券大礼包)
阿里云 CDN 拥有国内节点 1000+,覆盖电信、联通、移动、铁通、教育、长宽等各运营商。带宽储备 80T 。海外节点 300+,部署在全球 70 多个国家和地区,覆盖六大洲。
主要特色功能包括:
- HTTPS 安全加速 – 防劫持、防篡改、防泄密,享受企业级可靠 HTTPS 加速服务。
- 高性能灵活缓存策略 – 智能对象热度算法,分层缓存热点资源,让您的资源精准加速。
- 访问控制 – 提供多重访盗链功能,refer 防盗链、UA 头防盗链、IP 防盗链、URL 鉴权校验,完美解决盗链危害。
- 性能优化 – 页面优化、智能压缩功能,为您减少传输内容节约开销的同时提升加速效果。
2,未备案网站
未备案网站的访客主要在国外,虽然阿里云也提供国外的 CDN 服务,但是在国外就没必要了。因为国外有一个大名鼎鼎的 CDN 服务商:CloudFlare!最重要的是完全免费!
有人可能要问了,那国内的网站可以用 CloudFlare CDN 吗?答案是可以,但是结果不是提速而是降速。因为 CloudFlare 在国内没有节点,节点都在国外。国内的访客访问到国外的节点上去了,速度自然更慢了。
关于 CloudFlare 的设置网上有很多教程,这里就不再赘述了。接入方式推荐使用 cname 方式,网上有很多第三方 cname 接入的网站,例如:笨牛网。此外再安装 CloudFlare 官方插件,当文章更新时可以及时刷新缓存。
但是有一个地方需要设置正确才能大幅度提升速度,就是设置 Page Rules。因为 CloudFlare 默认情况下只会缓存图片、css、js 等文件,html 等文章页面是不会缓存的,通过 Page Rules 建立规则就能调整 CloudFlare 缓存哪些页面,甚至整站缓存,这样速度就能大幅提升。
上图是在 CloudFlare 后台添加的一条 Page Rules。网址替换成您的网站,Browser Cache TTL(浏览器缓存时间) 和 Edge Cache TTL(回源周期)按照您的需求设置即可。回源周期就是 CloudFlare 多久缓存一次您网站的内容。
十、图片优化
图片是拖慢网站速度的一个很重要的原因,尤其是当网站使用了大量图片的时候,例如这篇文章中就使用了很多图片,除了使用 Lazyload,我还通过插件来解决图片优化的问题。
我尝试过 WordPress 的很多图片优化插件,其中做得最优秀的当属 Smush 和 imagify。
图片优化插件可以自动压缩和优化您上传的图片,而且还能根据您设置的最大尺寸, 自动缩小尺寸过大的图片。图片的体积减小了,自然加载速度就更快了。
图片的最大宽度建议设置为和文章的宽度一样,除非您想让访客能点击放大。因为访客能看到的宽度也就那么大,图片再大也只是浪费资源。查看方法如下图(点击放大):
如果您不想使用插件,网上也有很多网站可以利用,搜索:“在线压缩图片”就能找到,例如 yasuotu.com。您可以设定宽度、高度、压缩比率来优化图片。
图片优化的方法还不止这些,例如禁用 WordPress 缩略图功能以节省服务器空间。此外还有更优雅的解决方案,就是利用阿里云 oss 图片处理服务实时压缩和缩放图片。
十一、异步加载 JavaScript
有时候,我们的网站无可避免要加载一些第三方资源,例如前面提到的谷歌字体,或者统计代码。但是这些外部资源存在于第三方服务器,加载的速度是不可控的,有时候会减慢网站的整体速度。
通常最常见的外部资源是加载第三方 js 文件,此时我们可以通过异步加载来解决问题。异步加载可以使得外部 js 放在最后加载和执行,这样访客就无须等待这些外部 js 加载完毕就能看到页面,提升用户体验。
异步加载 js 很简单,如果您可以编辑代码,那么只需要添加“async”或“defer”属性即可,例如:
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
您还可以安装 Async JavaScript 插件,这个插件可以让您控制每个外部 js 是否需要异步加载。或者使用 Asset CleanUp 插件,这个插件不仅可以异步 js,还可以控制在哪些页面禁用 js 脚本(有些脚本并非所有页面都必须使用)。
此外,针对 Google Analytics 您可以使用 CAOS 插件把代码托管到自己的服务器。
十二、DNS Prefetch
DNS Prefetch 是一种 DNS 预解析技术。当你浏览网页时,浏览器会在加载网页时对网页中的域名进行解析缓存,这样在你单击当前网页中的连结时就无需进行 DNS 的解析,减少用户等待时间,提高用户体验。
例如淘宝网站上就使用了 DNS Prefetch:
大部分网站都无可避免要使用到第三方网站的资源(例如百度统计),或者跳转到其他网站的连结。此时通过 DNS Prefetch 就能省去 DNS 解析的时间,提升访问的速度。
您可以安装插件 Pre* Party Resource Hints 来实现 DNS Prefetch,或者在 functions.php 中添加代码,例如:
function wp_dns_prefetch() {
echo '
<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="//bdimg.share.baidu.com/" />
<link rel="dns-prefetch" href="//api.share.baidu.com/" />
<link rel="dns-prefetch" href="//hm.baidu.com/" />
<link rel="dns-prefetch" href="//www.google-analytics.com" />
';
}
add_action( 'wp_head', 'wp_dns_prefetch');
十三、禁用无用的功能
WordPress 有一些不必要的功能,如果您不需要这些功能,那么可以禁用掉,这样就能节省服务器资源。
例如:文章修订版本、自动保存、Emoji 表情、Pingback 和 Trackback、XML-RPC、REST API 等等。
您可以使用插件 Clearfy 或者 WP Disable 来禁用这些功能。
十四、避免安装过多插件
为什么那么多人喜欢使用 WordPress,其中一个原因就是有大量的插件,可以实现各种各样的功能。但是由于插件作者的水平不一,导致插件的性能各异,还有兼容性等问题,所以安装过多的插件反而会拖慢系统。有些人觉得 WordPress 臃肿,其中一个原因就是不当使用插件。
插件是要消耗服务器资源的,每多安装一个插件就代表多消耗一份资源,所以务必要控制插件的数量。如果一个插件能实现多个功能,就不要安装一个独立功能的插件。
此外,如果两个插件功能相仿,要尽量使用安装量大的插件,这表明插件更实用,而且兼容性更好。安装量过低的插件尽量不要使用,安装后导致系统崩溃的事情并不少见。
十五、有选择性的禁用插件
每个插件都有相应的一些功能,但是并非网站上所有页面都需要使用到这些功能。实际情况却是,很多插件在安装后,都会在网站的每一个页面中加载自己的 js 和 css 文件,这样页面中就加载了很多没必要的资源,白白浪费带宽资源。
Asset Cleanup 非常适合于禁用在特定页面上不使用的插件。特别是如果您安装了许多插件,或者仅安装了几个资源密集型插件,但是仅需将它们加载到所使用的页面上。这意味着整个 WordPress 网站可以加载得更快。类似的插件还有 Plugin Organizer。
利用 Chrome 的开发者工具,在 Network 中搜索“plugins”,您就能看到页面中加载了哪些插件的资源。检查网站上各种类型的页面,特别是文章页面,如果有哪些 js 或 css 是当前页面没有使用到的,那么就用 Asset Cleanup 禁用掉吧。
十六、限制搜索引擎爬虫
搜索引擎爬虫是消耗服务器资源的大户,特别是一些勤快的爬虫,例如 Googlebot。此外还有一些专门四处抓取网站数据的网络爬虫,例如 AhrefsBot。为了避免服务器资源浪费,我们很有必要对这些爬虫做些限制,甚至禁止访问。
Wordfence 是一款非常强大的 WordPress 安全插件,推荐所有人安装使用。在 WordFence 的“Tools → Live Traffic”中您可以实时查看所有访问者信息,包括真实访客、爬虫、网络攻击等等。
找到那些您不希望抓取您网站数据的爬虫,然后在 robots.txt 中禁止掉。例如:
User-agent: AhrefsBot
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: YandexBot
Disallow: /
有些爬虫可能不遵守 robots 协议,那么您可以在“Firewall → Blocking”中设置规则来禁止访问。
此外,Wordfence 还有一项 Rate Limiting 功能,可以限制访问频率,及禁止虚假 Google 爬虫。大家可以根据自己的实际情况,限制真实人类或蜘蛛爬虫的访问频率。
十七、限制文章修订版本
在您编辑文章的过程中,每保存一次就会增加一个文章修订版本。日积月累下,这些文章修订版本的数量将达到一个恐怖的数量,实际上我们并不需要如此多的修订版本,这只会增加数据库的体积,降低数据库的性能。
有很多插件都有限制文章修订版本的功能,例如前面提到的 Clearfy。但是其实我们只需在网站根目录 wp-config.php 文件中增加一行代码就能解决问题:
define('WP_POST_REVISIONS', 3); //保存 3 个修订版本
define('WP_POST_REVISIONS', false); //不保存任何修订版本