众所周知,WordPress对于小主机来说简直是一个灾难级级别的开源博客应用程序。无论是其解压后体积还是性能需求上比Typecho、Halo这些中小型博客程序要繁重得多,没做任何优化的WordPress站点的访问速度就是一个灾难。对于访客来说,首次访问速度非常重要,这将会决定访客对你博客的态度。因此,我们需要从各个方面优化WordPress的访问体验。我们将会分成 软件本体 和 网络 这两个部分针对WordPress的优化展开讲述。
如果你是国内站长,我建议你的博客域名持有 ICP工信部备案 ,因为可以借助国内公有云CDN加速你的博客打开速度。
软件方面
缓存
WordPress应用程序基于PHP技术开发而成,PHP的实时性很高,因此你的博客数据可能一直处于刷新状态,没有任何旧内容,可能几年前发布的文章到现在还在实时更新,这种即时状态会大幅拖慢系统后台处理速度,这时我们需要借助 W3 Total Cache
插件帮助我们进行缓存。
- TA会缓存哪些内容?包括但不限于已有的文章、帖子(如有)、评论以及分类、标签等不太更改的内容
- TA会缓存到哪?默认情况下缓存在你的服务器磁盘(通常情况下不会太大),如果你有
Redis
缓存器,你也可以选择在缓存器上 - TA会增加我的网络占用吗?不会。反而通过优化HTML/CSS/JS等静态内容,减小带宽占用
- 我不会配置怎么办?初次安装会有安装向导,帮助你选择最优的优化方案,大部分功能免费
您可以通过点击此链接下载此插件最新版本。如何安装?进入 管理后台 - 插件 - 安装新插件
,单击页面上方“选择文件”,然后在文件管理器中选择插件安装包(.zip
格式),单击“安装”即可。
安装后,请前往 插件 - 已安装插件
启用 W3 Total Cache
,接着进入左侧菜单栏中新增的 性能
选项,此时插件应该会自动引导你至安装页面(如无,请手动路由至 /wp-admin/admin.php?page=w3tc_setup_guide
)。
成功进入页面后,根据引导点击 下一步
即可,在新页面选择缓存器时推荐使用引导建议的缓存器(例如opcache/memcached/redis等等)。当然,你也可以自行选择和配置缓存器的运行,在 性能
的二级菜单下选择详细配置项(如图)。
如果你的缓存配置恰当,你的前台网页加载速度能至少提速50%及以上,可见这个老牌缓存插件还是有实力的,配置简单自动化配置,是懒人的福音。
后台体验优化
除了 W3 Total Cache
以外,我们同时也推荐使用 WPJAM Basic
插件。此插件可以屏蔽一些冗余功能,例如文章修订,减小数据库运行负担,加快前后台的处理速度。您可以在这里下载最新官方插件。但是使用高级功能时需要使用WeChat关注开发者公众号才能使用。
WPJAM中的设置可以仿照我的进行配置,仅供参考:
- 屏蔽文章修订
- 屏蔽Trackback
- 屏蔽Emoji图片
- 屏蔽字符转码
- 屏蔽邮箱验证
- 屏蔽自动更新(注意,此功能启用可能无法第一时间获取安全更新)
- 屏蔽后台新闻(使后台更简洁)
- 屏蔽嵌入功能
同时它还附带了一些高级功能,例如百度站长自动递交站点地图、CDN加速(本教程下一部分)、SEO设置(但我更推荐Yoast SEO
)等等。
SEO优化
SEO优化的起点是你必须让系统生成一个sitemap让bot识别。你可以去看看这篇来自Ahresfs营销总监的文章,把博客SEO的要点都总结到了。如果你安装了 Yoast SEO 插件的话,发布时插件会对你的SEO配置进行评级和优化建议。文章概述之类的可以借助ChatGPT、豆包一类大语言模型进行生成或优化改进。
网络方面
对于博客来说,良好的页面加载速度是至关重要的,因此我们可以选择为站点本体和博客图床启用CDN来加速访问。
何为CDN?
云服务厂商是这么说的:
内容分发网络(CDN)是一个互连服务器网络,可加快数据密集型应用程序的网页加载速度。CDN 可以表示内容分发网络或内容分配网络。当用户访问某个网站时,来自该网站服务器的数据必须通过互联网传输到用户的计算机。如果用户距离该服务器较远,则加载大文件(例如视频或网站图像)将需要很长时间。相反,如果网站内容存储在距离用户较近的 CDN 服务器上,就可以更快到达他们的计算机。—— AWS
内容分发网络 (CDN) 是一个分布在不同地理位置的服务器群,用于缓存靠近最终用户的内容。CDN 可以快速传输加载互联网内容所需的资产,包括 HTML 网页、JavaScript 文件、样式表、图像和视频。CDN 服务的受欢迎程度不断提高,当今大部分 Web 流量都通过 CDN 传送,包括 Facebook、Netflix 和Amazon 等主要网站的流量。—— CloudFlare
我应该如何选择CDN服务商?
国内拥有ICP备案资质的优势就体现在这里了,只要你的域名有备案就可以在阿里腾讯华为百度火山等等大厂云平台使用他们的CDN边缘加速网络,通常情况下(服务器在内地且使用国内CDN)用户首次访问全站第一页加载所需时间为1.2s(无缓存)。
我体验过上述除火山引擎外所有国内大厂的边缘加速网络,我可以作出主观排名(对WordPress有专门优化者优先,其次是速度和节点分布):
- 腾讯云EdgeOne:服务偏向安全方面和动态优化。个人版支持热门漏洞专项拦截,规则引擎对WordPress有专门优化(需要套餐额外费用,但对小站来说不高)
- 阿里云CDN:国内访问速度优,CDN的自带WAF防火墙拦截率高但是会导致账单比较难看
- Ucloud优刻得:境外线路优,对于境外服务器很友好,访问速度快,这一点甚至比某些大厂还来得好
- 华为云CDN:我不好说,控制台有点难用,速度中等偏上,无附加消费但是新技术支持没有腾讯快,但是我推荐他们的DNS解析服务
- 百度云CDN:境内外访问速度中等,但是价格还可以,速度不如腾讯阿里而且控制台有点难用
没有备案怎么办?建议CloudFlare一把梭。然后不到几个月你就会发现CF大中华区客户经理找上门来了给你推销Business计划或者自选。
一般来说你一年仅需购买50GB的流量即可(大部分厂商价格在10元上下浮动),为了防止计划外的消费我建议再充值不少于20元的余额(HTTPS费用、优化类功能费用等)。
如何配置全站CDN?
首先在CDN平台创建你的域名加速实例,以GoEdge用户面板为例:
大部分SSL免费证书有效期从1个自然年减少到3个自然月,因此站长需要持续维护网站运营,以免出现长时间证书过期导致无法正常访问网站现象(因为CDN特性服务器和边缘节点必须使用同一个证书,并且必须有效否则会弹HSTS之类的报错)。
一般来说,WordPress的缓存仅需针对几条目录和文件进行特殊设置,剩下全部静态文件全部缓存2小时-3天即可。
- 目录:
/wp-admin
缓存时间0天 - 目录:/wp-content/plugins/ 缓存时间0天
- 文件后缀:
.php
缓存时间0天 - 文件后缀:
.png .jpg .jpeg .ico
缓存时间3天 - 文件后缀:
.css
缓存时间7天
最终配置就像这样:
为了安全起见,我们强烈建议加入一些安全措施,包括但不限于WAF防火墙、QPS速率拦截、CC防护等。对于WordPress,请求速率上限可适当调高,例如不超过800次/5秒,其他(如Halo、Hexo、Typecho)则适当减少。
如何配置博客图床?
某些人会习惯使用OSS/COS存储桶存储自己的文件资源,同时你也可以在WordPress上通过存储桶存储你站点上的大部分图片,并且会自动替换文中目标原链接(yourwebsite.com/wp-content/xxxxxx)为存储桶的目标地址。为了加快加载速度,我们同样选择了CDN边缘网络来加速图片资源加载。
我们将会使用 阿里云OSS + AliOSS插件 + DogeCloud CDN
来实现这个方案。
首先登录阿里云OSS控制台,创建一个存储桶实例。如果您的服务器是阿里云ECS/轻量云服务器,可以选择与服务器相同的地区节点,减少OSS在公网上的流量开销,直接走内网访问。
创建完毕之后,我们需要为我们的WordPress创建一个用于上传和获取目标地址的 访问秘钥AccessKey
。
在控制台的右上角的个人中心组件中,选择 AccessKey
选项。如果你不嫌麻烦的话可以选择创建一个RAM子用户然后使用子用户的AccessKey(安全性较高,可以限制子账户API控制权限),如果想要方便快捷一些的话也可以直接使用主账号的AccessKey(风险较高,请不要将主账号AccessKey泄露给任何人)。
请妥善保管好你所创建的 AccessKey
,这个页面仅会出现一次,你可以选择下载CSV文件保存在安全的位置。
获取到账户访问密钥后,在WordPress上安装 OSS Aliyun
插件。此插件在官方插件商城上架,你可以直接搜索或者在此页面下载插件压缩包手动安装。安装之后启用它,进入设置页面。根据提示信息完成客户端配置。
如果配置有效,你回到 RAM访问控制
理应看到这个:
接下来配置Bucket域名,一般情况下不用任何CDN/自有域名绑定的情况下,格式为 https://{OSS外网访问Bucket域名}/{本地文件夹}
。但我这里绑定了自己的域名,示例:
我为我的博客图床配置了DogeCloud的融合CDN,DogeCloudCDN的优势是可以在节点侧完成AccessKey身份验证实现存储桶私有但是能对用户实现公有读,写入又要账户权限的提前处理。融合CDN的加速体验也相对较好,针对图床的安全访问速率限制最好在30次/秒左右,并且配置防盗链。而且它们的CDN有个“证书无忧”特色服务,在你的网站SSL证书临近到期时会自动申请(支持多个证书品牌)并替换掉CDN侧的安全证书,但是服务器端还是得自己换。
然后做个全局缓存。
如果你想使用阿里云CDN的话,仅需在 Bucket配置 - 域名管理
绑定域名(首次绑定域名可能需要进行所有权验证),接着在 阿里云CDN加速
一栏点击“配置加速”,在新页面中直接点击“下一步”,选择推荐配置最后在DNS侧配置相应的解析记录即可。阿里云系统会自动为你填写并处理一切数据,包括缓存和自动刷新(好评)。
配置完成后回到插件配置页面,替换 URL前缀
,搞定。至此,WordPress的基本优化到此结束。
如果您对我的文章感兴趣的话,可以向我赞助(TRC20):TP9Bxi883mPpZBaKduKw9PmFkNggZKq5bc
学到了,谢谢作者