差不多去年这个时候,自己萌生了玩VPS和搭建自己的博客的想法,眨眼间博客也运行快一年了。博客使用过程中,中途发现自己的站点打开速度很慢,之前也零零碎碎地看过这个问题,但是一直没能解决。今天周末好不容易闲下来,终于研究出了问题所在。
博客访问慢的直接原因在于,网站的 TTFB 等待过长,关于什么是TTFB,我们文末再介绍。问题的解决方案,就是,之前VPS上自动部署的方式不对,没有依赖静态页面,而是利用了Hexo的服务器。通过直接访问Hexo提前生成好的静态页面,博客加载速度有了明显提高。
背景及起因
关于之前的自动部署方式,可以参考这篇文章 自动将更新部署到VPS.md
当时采用的在博客上运行hexo server
来提供网站服务。实际上,这种方式是本地编写文章时测试用的,用在VPS上提供博客站点服务,就会显得访问速度没有理想的那么快(因为这是实时编译生成的网页,非静态的资源页面),TTFB时间过长。
解决方案
找到了问题,就可以很方便的对症下药了。
Hexo提供了hexo -g
来生成博客中所有文章对应的静态页面,我们要做的就是在访问博客的时候直接访问VPS上的静态页面。
多分支管理
为了方便管理,我新建了一个分支dev
,在这个分支上进行博客的编写,同时删除了原先在Master分支上的全部内容
1 | 新建分支 |
自动部署Master分支
我们借助hexo -d
命令来实现自动部署。
首先,修改站点的_config.yml
配置文件,修改其中的deploy节点
1 | # Deployment |
这样通过使用hexo -d
命令可以来自动部署文章到github。如果提示错误,可能你需要安装hexo-deployer-git
1 | npm install hexo-deployer-git --save |
自动部署到VPS
上一步的deploy参数正确配置后,文章写完使用hexo g -d命令就可以直接部署,并提交到GitHub上的Master分支。
然后在VPS上clone下来Master分支,我的存储路径是/home/blog/HexoBlog
,然后借助Nginx提供静态站点的访问
什么,你还不知道Nginx?出门左转谷歌一下,你就知道
修改原先的/usr/local/nginx/conf/vhost/blog.conf
,改成如下内容
1 | server |
然后重启一下Nginx站点配置nginx -s reload
,然后再访问https://blog.winsky.wang/
,发现站点已经快了很多。爽歪歪,有木有!!
先别急着爽,作为一个大忙(lan)人,我可不想每次更新都要登上VPS手动拉取最新的更新。之前我们使用了webhook
来自动部署,现在还一样,不过脚本要有一点小小的变动了。
修改之前的deploy.sh
脚本,更新内容如下
1 | cd /home/blog/HexoBlog |
每次写完文章,执行一下hexo clean && hexo generate && hexo deploy
就可以借助webhook自动更新VPS上的文件内容了。是不是真的很方便,要不要点个赞!
修改推送到dev分支
网站页面是保存了,部署也自动执行了,但这时候我们还没有保存我们的hexo原始文件,包括我们的文章md文件,我们千辛万苦修改的主题配置等。。。
接下来使用下面的步骤将他们都统统推送到hexo分支上去。
1 | git add . |
这样就OK了,万事大吉~
什么是 TTFB
TTFB 是 Time to First Byte 的缩写,指的是浏览器开始收到服务器响应数据的时间(后台处理时间+重定向时间),是反映服务端响应速度的重要指标。
就像你问朋友了一个问题,你的朋友思考了一会儿才给你答案,你朋友思考的时间就相当于 TTFB。你朋友思考的时间越短,就说明你朋友越聪明或者对你的问题越熟悉。
对服务器来说,TTFB 时间越短,就说明服务器响应越快。