# 我是如何优化博客的

- Link: https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/
- Published: 2020-06-13T22:04:14+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#)

 * [原理](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#%e5%8e%9f%e7%90%86)
 * [分析](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#%e5%88%86%e6%9e%90)
    - [域名解析](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#%e5%9f%9f%e5%90%8d%e8%a7%a3%e6%9e%90)
    - [内容下载](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#%e5%86%85%e5%ae%b9%e4%b8%8b%e8%bd%bd)
       * [内容生成](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#%e5%86%85%e5%ae%b9%e7%94%9f%e6%88%90)
       * [内容下载](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#%e5%86%85%e5%ae%b9%e4%b8%8b%e8%bd%bd-2)
 * [本地渲染](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#%e6%9c%ac%e5%9c%b0%e6%b8%b2%e6%9f%93)
 * [总结](https://www.ixiqin.com/2020/06/13/i-am-how-to-optimize-the-blog/#%e6%80%bb%e7%bb%93)

由于主域名的备案掉了，所以我不得已，将站点从国内的 VPS 上迁移到了国外的 VPS 上，
但是，站点迁移，速度不能下降。

事实上，经过一段优化，目前这个站点的速度着实不错，对我自己来说，基本上是秒开，而
在测试网站上，速度也是杠杠的。

除了极个别监测点的速度实在是太慢，绝大多数的监测点都在 1s 内打开。

![](https://postimg.aliavv.com/mbp/3elis.png)

[https://www.boce.com/http/www.ixiqin.com](https://www.boce.com/http/www.ixiqin.com)

能达到这样的速度，背后意味着很多种优化。我们一一来看。

## 原理

如果要对网站速度进行优化，就需要理解，在我们从浏览器中输入一个网址，到我们最终网页
加载完成，都经历了哪些流程。

 1. **域名解析：**我们输入在浏览器中的域名，是无法直接抵达目标主机的。因此，我们需要
    访问 DNS 服务，将域名转换为 IP 地址，从而才能抵达目标主机。
 2. **内容下载**：当我们的请求抵达目标主机后，浏览器会下载服务器的返回。
 3. **本地渲染：**浏览器将服务器的返回下载到本地后，会在浏览器的引擎中进行渲染。

当然， 在实际执行过程中，我们需要考虑的不仅仅是这三个点，不过就这三个点而言，也足够
我们进行优化了，更加细致的，可以在后续遇见新的性能瓶颈后，进行优化。

## 分析

在理解了原理后，我们可以一一来分析

### 域名解析

对细节进行分析以后，可以看到，我的站点在解析时间上的耗时是普遍比较长的，大多是在
0.3 秒，这是一个优化点。

![](https://postimg.aliavv.com/mbp/dzvhf.png)

DNS 的优化总的来说，乏善可陈。因为系统底层对于 DNS 的机制只有两处，分别是

 1. Hosts
 2. DNS 解析

如果想要优化，那你就需要降低你的 DNS 解析时间。Hosts 显然是不靠谱的，你不可能让你的
用户都去修改了 Hosts 后再使用。

而 DNS 解析，目前我使用的是免费的阿里云 DNS ，这里的优化其实依赖的是阿里云的 DNS
优化（付费版可能会好一点，不过我暂时不考虑上付费 DNS）。

### 内容下载

内容下载可以分为两个部分

 1. **内容生成**：服务器计算得出结果。
 2. **内容下载**：浏览器将服务器计算的结果下载到本地。

#### 内容生成

在内容下载整个流程中，WordPress 主要的问题往往是卡在内容生成方面。

由于 WordPress 的功能强大，且在优化方面做的一般，因此，当我们的 WordPress 的内容
足够多的时候， 数据库的查询就会开始变慢。

在这个时候，我们可以选择使用一些工具来加速站点的优化。一般的来说，会考虑使用 Key
Value 数据库来替代直接使用 MySQL 进行查询。

这方面可选的包括

 * Memcached
 * Redis
 * 文件缓存

我因为懒得配置 MemeCached 和 Redis ，因此使用的是文件缓存，这里我用的是 WordPress
的 WP-Optimize 插件

![](https://postimg.aliavv.com/mbp/kq8ap.png)

可以看到，我的站点的缓存数量达到了 2716，缓存的大小达到了 45.6MB。也正是这些缓存，
让我的站点在内容计算方面不需要耗费太多的时间，优化站点的体验。

**当然，如果你追求更好的速度，可以考虑上 Redis 或 Memcache ，这些内容互联网上有非常
多的教程，我就不再一一介绍。**

#### 内容下载

说完了内容生成，来谈一谈内容下载。

在内容下载方面，其实主要受限于你所使用的虚拟主机、VPS、云服务器性能。

在我们购买虚拟主机、云服务器的时候，我们往往会要购买相应的带宽。你购买的带宽越大，
你的站点在下载时能够使用的带宽就会越大，相应的，下载的速度也就会越大。

**在这方面，如果你的站点有备案，可以考虑购买一些国内的 CDN 服务，使用 CDN 来完成
站点的加速，让你的站点加载速度可以变得更快一些。**我的域名没有备案，所以没办法使用
国内的 CDN，比较遗憾。

## 本地渲染

内容下载到本地，就会需要进行内容的渲染，而渲染的过程则和你的站点设计、标签数量、
复杂度等都有关系。

你会发现，我现在站点使用的大多数是 WordPress 官方的主题，官方的主题的好处在于其站
点设计简洁大方，同时页面的标签结构会比较合理，可以确保不会卡在一些奇奇怪怪得地方。

类似的，这也是为什么我很讨厌一些站点生成器（可视化拖拽工具），他们的确可以很方便
的生成，但相应的，也会带来大量的冗余标签，让我觉得十分不优雅（当然，背后的人效计算
又是另外一回事了）。

## 总结

对于你自己的博客来说，你也可以参照我的优化方法，来找到自己的问题点，并进行相应的
优化，当然，如果你有什么想要讨论的，也欢迎你在下方的留言区和我一起分享。

---

Append：

我将 DNS 从阿里云免费 DNS 切换到 DNSPod 的个人专业版的以后，我的 DNS 解析时间获得
大幅度下降，解析速度降为 0.13s 以内。如果你的解析速度也很高，值得试试。
