我的大体框架是,用 Hexo 生成静态站点,利用 Github Pages、Vercel 和 GitLab Pages 部署博客,再利用聚名网注册和管理域名。
为什么要用这么多部署平台?主要是由于百度被 Github 禁止而不被允许爬取 Github Pages。因此我最初采用 Github Pages 和 GitLab Pages 同步部署来解决这个问题(GitLab Pages 可以被百度收录)。但是这样太麻烦,而且两者网址不统一。因此我最终放弃了 GitLab Pages 的方案,选择在聚名网购买了一个域名,再用 Vercel 镜像了 Github 项目,并将域名解析到 Vercel 中,从而解决了这一问题,见:
评论系统我选用了 Waline,原因是它的部署相对简单,且评论者无需登录。
注意这一评论系统还需要部署后台数据库和服务器,我选择的方案是 LeanCloud+Vercel。
这一评论系统每次打开时都会从 UNPKG 拉取包,但是速度很慢(而且好像不稳定),因此我更换成了国内的 CDN 镜像 BootCDN。更多 CDN 镜像可以参考如下网页:
为了实现自动新评论通知,我申请了个人域名邮箱(不想使用私人邮箱来发送通知)。综合考虑可用性和价格因素后,我决定暂时使用阿里云企业邮箱来实现这一点。值得注意的是,注册好的邮箱发送邮件可能容易被拒收,因此最好配置一系列安全协议,比如 SPF、DKIM 和 DMARC。
我个人喜欢比较节约而朴素的画风,因此最终挑选了 maupassant
这一主题。
当然,我并非对这一主题所有部分都完全满意,因此个别细节也会按照自己的喜好进行魔改。比如注意到 mathjax
生成的公式太长会溢出屏幕,因此按照下方文章的方式修改了 style.css
文件:
我的很多博客内容都包含数学公式,然而 mathjax v1
渲染效率很低,因此我将 mathjax
迁移到了 v3
。
对于侧栏的 tags
样式,我参考了 Hux Blog 的代码:
为了提供更好的页面打印体验,我参考下方文章优化了网页打印样式:
打印时会自动生成 <a>
元素链接文本,但是由于很多链接都是相对路径的形式,因此参照如下回答,将所有相对路径全部转换为绝对路径:
为了给创作内容进行版权保护,我在页面底部添加了 Creative Commons 知识共享协议。创作者可以在 Chooser 上选择一个协议类型,我最终选择用 CC BY-NC-SA 4.0 来保护个站中的所有内容,尽管这一协议在国内的效力存疑。
这部分是重头戏,对我来说非常伤脑筋。首先是四个主要搜索引擎的站长平台:
若要让搜索引擎知道需要爬取哪些网站,就需要提交 sitemap。我利用以下两个插件来生成适用于百度、bing 和 Google 的 sitemap:
由于使用 sitemap 的方式提交网站收录比较慢,因此最好采用主动推送链接的方式来加快网站内容的收录,我使用了 hexo-submit-urls-to-search-engine
这一插件。
按照文档说明即可自动提交到百度和 Bing,但是 Google 的处理流程似乎有些变化,因此我还参考了如下博客:
编写 robots.txt
有助于搜索引擎节约爬虫资源,从而提高 SEO 性能。我参考如下指南编写了网站 robots.txt
文件。
SEO 还有很多花样,下面这个网站里可以获得一些学习资料和工具:
Hexo 官网上提供了很多可用的插件。我除了上述介绍的插件以外,主要还安装了如下几个:
hexo-abbrlink
。Hexo 自动将文章标题作为文章链接,在浏览器搜索栏显示效果比较丑陋,而且据说不利于 SEO 优化。因此我安装了这一插件,用于为每篇文章生成一个固定编号,并生成对应的文章链接。hexo-link-card
。这是一个能够在博客显示卡片链接的插件,显示效果前文已经大量展示过了。hexo-all-minifier
。页面元素多了会导致文件比较大,网页加载起来效率变慢。为此安装这个插件,来压缩页面源文件,提高页面使用体验。hexo-filter-mermaid-diagrams
。这一插件能够渲染 Markdown 文档中的 Mermaid 流程图。