关于使用 github page + hexo 创建个人网站, hexo官网上的步骤已经非常详细,网上也有非常多相关的文章, 所以基础步骤就不写了。

这里记录一些个性化过程中遇到的问题。

1. TOC 锚点失效

文章目录正常生成了,但是点击目录无法跳转到文章对应位置。
解决办法点这里查看

2. 文章的短链接生成

hexo 文章标题默认的格式是:year/:month/:day/:title/,这个格式的标题在我看来有2个主要问题

  1. 太长,可以考虑只取默认格式中的一部分,如:title/
  2. 易变化, 写文章时有可能会修改标题,所以文章的url就会发生变化。 url 一旦发生变化就会对网站排名产生负面影响

综上,我希望每篇文章都有一个 固定且短的 url。

hexo-abbrlink:create one and only link for every post for hexo 插件可以实现该功能,

它根据文章标题和创建时间为文章生成一个abbrlink, 如果文章已经有该属性则不会重复生成。

3. custom domain 消失记

在github pages 配置了custom domain ,但是我发现每次deploy新内容后,配置好的custom domain 都会消失,经过排查发现是缺失来 CNAME文件。

3.1 CNAME是什么

CNAME(Canonical Name)记录是一种DNS(Domain Name System)记录类型,用于将一个域名别名映射到另一个真正的域名。
它的作用是简化域名管理、实现负载均衡、支持CDN集成等。CNAME记录的工作流程包括DNS查询、递归查询、权威DNS服务器响应和IP地址返回等步骤。通过正确配置CNAME记录,可以有效管理和优化网站的域名解析。

3.2 CNAME记录的作用

  1. 域名重定向:允许多个域名指向同一个目标域名,简化了域名管理。例如,将www.example.com和blog.example.com都指向example.com。
  2. 负载均衡:通过CNAME记录可以将流量分布到不同的服务器,实现负载均衡。
  3. 内容分发网络(CDN)集成:CDN提供商通常要求将用户的子域名(如cdn.example.com)CNAME到他们的CDN域名(如cdn.provider.com),以便进行流量管理和内容分发。

3.3 CNAME记录的工作流程

CNAME记录的工作流程可以分为两个主要阶段:解析CNAME记录本身和解析CNAME记录指向的目标域名,直到最终得到一个IP地址。

  1. DNS查询开始:
    用户在浏览器中输入域名,如www.example.com,并发送DNS查询请求。
  2. 递归DNS服务器处理请求:
    用户的计算机向递归DNS服务器(通常由ISP提供)发送请求。
    递归DNS服务器查询根DNS服务器,获取顶级域名服务器(如.com的服务器)的信息。
  3. 递归查询过程:
    递归DNS服务器查询顶级域名服务器,获取该域的权威DNS服务器信息(如example.com的DNS服务器)。
    递归DNS服务器接着查询权威DNS服务器。
  4. 权威DNS服务器响应:
    权威DNS服务器查找www.example.com的DNS记录。
    如果www.example.com有一个CNAME记录指向example.com,权威DNS服务器返回这个CNAME记录。
  5. CNAME解析:
    递归DNS服务器接收到CNAME记录后,再次进行DNS查询,以解析CNAME记录指向的目标域名example.com。
    递归DNS服务器最终获取目标域名example.com的A记录(IP地址)。
  6. 返回IP地址:
    递归DNS服务器将目标域名example.com的A记录返回给用户的计算机。
    用户的计算机使用该IP地址与目标服务器建立连接,加载网站内容。

    3.4 Hexo 中CNAME 文件的作用

当你使用自定义域名而不是username.github.io来访问网站时,需要在在source目录中创建一个文件CNAME 文件,并写入自定义域名

  • CNAME文件的存在和内容会告知GitHub Pages你希望通过哪个自定义域名访问你的网站。
  • 例如,如果你的自定义域名是www.example.com,你需要在CNAME文件中写入www.example.com

4. 数学公式的支持

可参考 在任意的hexo主题支持数学公式