前几天才发表了 WordPress 的 CDN 方案,但是很快就反水了,并不是因为那个方案不够好,而是越写博客越发现,静态博客才是个人博客应有的终极形态。

很多朋友都在劝我抛弃 WordPress 转投 Hexo 的怀抱,不过确实,“纯”静态博客个人才是博客应有的样子。为什么要加一个“纯”呢?就像 WordPress,很多人通过伪静态,把页面后缀改为 html,再使 CDN 强制缓存,达到一个静态的效果。但这样的 伪静态 并非 静态博客 的真正样貌。

为什么不使用 Hexo 或者其他方案,因为仅 Hexo 对我来说是完全陌生的,而且其所使用的技术栈,也是我完全不懂的。相较于使用一些完全不懂的东西,不如去继续把手头正在用的改造的更好,毕竟内容才是博客最主要的。


方案选择

选择 WordPress 的理由

其实对于 WordPress 的理由有很多,无论是一些非常好用的插件,还是 Gutenberg,还是整个操作逻辑,对于软件使用的熟练使用程度,其所使用语言对目前我来说一些基本操作都能够实现。都在让我坚持使用 WordPress,以至于更换“纯”静态方案,没有将其替换掉的原因。

为什么要坚持所谓的"纯"静态

传统的 WordPress 加速解决方案都是使用 WP Super cache 之类的插件,生成缓存,然后生成 html 文件,使用 CDN 强制缓存,但这么做的问题是,虽然展示的是静态的,但其还是需要执行 SQL 语句来调用数据的,虽然目前市面上的 0SQL 主题不少,但是大多数还是无法避免这个操作。

而“纯”静态化,直接是 0SQL,无需后端,可以极大的缩少服务器资源的占用。就算你的服务器在海外,只要域名备案,通过国内的 CDN,都可以获取非常可观的速度。

目前方案的问题

目前方案主要拥有下面两个问题:搜索不可用以及评论不可用。

我对于这两个问题的解决直接放弃了。

本身国内的个人备案是不支持交互式网站的,而且垃圾评论实在是太多,以至于我后面开启了 reCAPTCHA,还是不断的有人来打广告。。。。

关于搜索,因为每个文章都拥有相应的 tag,点击一下即可显示相关文章,一部分承担了搜索的功能。

两个问题带来的影响都不算大,索性就不去管了,去专注内容。

更新不及时,需要手动去刷新 CDN 缓存。

Simply Static

插件地址:Simply Static

这是我目前所选择方案所使用到的插件,它最大的好处就是通过缓存可以直接将 WordPress 页面生成静态文件,并且可以将文件中的地址自动替换,直接放到服务器即可。

方案介绍

所需要的要求如下:

  • 需要用到两个域名:
    • console.domain.com //用于 WordPress 动态资源的域名
    • domain.com //用于静态博客域名(博客的主域名)
  • 两个站点都需要位于同一服务器内
  • 其余要求可以打开插件 Simply Static › Diagnostics 查看有哪些地方不符合规则

配置

Simply Static 设置

原理很简单,就是通过 Simply Static 这个插件,直接在 domain.com 也就是你博客的主域名的目录里生成静态文件。

这个插件,需要进行以下设置:

GENERAL

1、Destination URLs

此处的作用是将 WordPress 生成的静态文件中 动态博客地址,转为主博客的地址(静态地址)

此处需要选择 Use absolute URLs 然后填写你博客的主域名

2、Delivery Method

此处的作用,是选择把生成的静态文件通过何种方式存储。

此处选择:Local Directory

3、Local Directory

设置生成的静态文件存储的目录

此处填写 主博客所设置的目录即可。

INCLUDE/EXCLUDE

此处设置一处:Additional URLs

输入内容主要是不包含在静态页面中的链接,但还是需要生成静态文件的链接。

此处需要设置 动态博客 的文件链接。

主要是 sitemap、robots.txt

其他设置

其他设置可根据自身需要来进行设置,诸如可以设置:附加文件和目录、要排除的 URL、

临时文件目录、HTTP 基本身份验证(此处强推)

全部设置完毕后,可以在 Diagnostics 处进行检测,当没有错误即可进行手动生成。

生成静态文件

当设置完毕,并且检测没有问题后,在 Generate 中点击 GENERATE STATIC FILES 即可生成文件,根据需要生成的文件大小不同所需时间也不同。

CDN 设置

CDN 还是采用通过 DNS 区分国内国外用户,国内用户走腾讯云,国外用户走 CloudFlare。此处与之前的方案没有改变。

因为是是纯静态文件,所以无论国内还是国外的用户都会有非常不错的体验。

此处可以参考 《目前博客的 CDN 解决方案

无论是 腾讯云还是CloudFlare主要:

  • 设置防盗链
  • 开启强制缓存,并设置缓存过期时间
  • 设置浏览器缓存过期时间
  • 开启HTTPS
  • 打开 压缩静态文件

对整个网站做出更改后,可以通过 腾讯云CDN、CloudFlare 两个 WordPress 实现刷新缓存,目前无其他比较好的方法。

折腾来折腾去还是找到了对我还是对用户来说都最好的解决方案,接下来就是专心写文了。


《WordPress “纯”静态化》