虽然 Typecho 是极轻量化的博客程序,但是很多人搭建完还是会觉得自己的网站有些慢,想要优化下打开速度,所以写了一篇优化教程。

本站是用 日本1核1G内存 50G SSD 500Mbps网络的KVM架构VPS 到国内电信延迟约50-70ms
IO约270MB/s(超过1Gbps), UnixBench 双核跑分1400左右
对于个人网站来说算是中等的配置。

低配置的机子做好了优化速度也能很快,本站国内的平均打开速度为 1秒,如果不做任何优化,那么本站首页的速度起码要 3秒 左右

测试速度

首先先测试一下当前的网页速度,按 F12 打开调试控制台,选择 网络,勾选持久日志和禁用缓存,清除 Service Worker,清理日志,刷新,调试控制台下面就会显示页面加载的耗时。

Google 的网页测速工具PageSpeed Insights

GTmetrix 网页速度检测、分析

优化完的 Typecho 用秒开来行用一点也不为过。速度堪比Google、百度等大厂。


优化教程

PHP版本毋庸置疑地影响着以php架构的typecho的运行
PHP7 相比于php5. 性能的提升是质的飞跃,还在用PHP5.版本的用户尽快升级的PHP7以上,你会发现速度快了不是一星半点。

注:Typecho 近期推出了 1.2 版本,距离上次更新有五年之久,1.1 版本不兼容 PHP 7.4+

图片压缩

  • WebP 压缩

WebP 是一个高压缩比的图片格式,支持无损和有损压缩,也支持透明图层,如果你网站的图片是 PNG 格式提供的,压缩为 WebP 通常会有很大的提升。(部分设备不支持WebP格式的图片)

使用图片压缩工具 TinyPNG
TinyPNG使用智能有损压缩技术将您的WebP, PNG and JPEG图片的文件大小降低。 通过选择性的减少图片中的颜色,只需要很少的字节数就能保存数据。图片文件最多能缩小过 70% 以上。 即便我视力很好,但依然无法看出区别! 使用优化过的图片来减少带宽和加载时间。

WebP 图片的体积一般只有同等分辨率下 png 图片体积的十分之一。

数据库缓存

网站加载时间(TTFB)长的一大原因是查询数据库耗时太长,采用缓存可以有效加速(用户打开网页直接使用缓存,不再查询数据库)
MySQL 8.0 弃用了查询缓存,所以我们需要选择一个其他的高性能缓存器,本站的数据库缓存采用了 Tp­Cache + Redis 。

TpCache是一款适用于 Type­cho 博客系统的缓存插件,插件默认集成了 Mem­cached、Mem­cache、Re­dis、Mysql 缓存驱动。

  • Redis 安装

首先,在宝塔面板软件商店中找到你安装的PHP,在PHP中设置-安装拓展-Redis

然后在Typecho 中安装TpCache插件并启用。

启用Redis后对博客的访问速度和稳定性提升很大。

堡塔网站加速

启用后效果是不错的,免费版每日 50000 次,破解版无限制,50000 次对普通个人博客网站肯定够了,除非被 CC 攻击。

TCP BBR

BBR是Google提出的一种新型拥塞控制算法,可使得Linux系统服务器显著地提高吞吐量和减少TCP连接的延迟,能够显著国外VPS访问和下载速度。什么叫拥塞?就是数据包丢包,传统拥塞控制算法,当出现拥塞时,会使发送数据窗口大幅减少,导致数据传送效率急剧降低,国内云网络一般丢包率很低,开不开bbr,理论上影响不大,bbr对国际线路提升比较明显,国际线路丢包特别严重,因此需要安装BBR开启加速功能。

使用root用户登录,运行以下命令:

wget --no-check-certificate -O /opt/bbr.sh https://github.com/teddysun/across/raw/master/bbr.sh
chmod 755 /opt/bbr.sh
/opt/bbr.sh

CDN(内容分发网络)

CDN可以有效加速网页静态资源,并隐藏源站 IP,如果你使用 CDN,建议把所有动态页面设置为“不缓存”,所有静态资源都设置为“365 天”

缩减CSS与JavaScript

缩减CSS与JS会极大的提高站点页面的加载效果,但操作不当可能会导致网页排版错乱(CSS)以及网页部分功能错误。具体采用一些JS压缩工具删减冗杂代码如 purecss, uglifyjs 来去除其中的空白字符、注释,最小化变量名等。在使用gzip压缩的基础上,对js内容的压缩能够将性能再提高5%。