使用 Hexo 和 WordPress 的静态站点生成器指南

静态站点生成器是将模板编译成静态 HTML 页面的系统。如果这听起来很有效——是的,确实如此。没有服务器处理或渲染,因此静态网站往往非常快速和轻量级,为您和您的用户节省宝贵的时间和带宽。这种效率的提高体现在成本的降低和潜在的收入增加上。

从优化 WordPress 到静态化

说到高效的收入来源,我想到了 WordPress。它为 28% 的互联网提供动力,是一个强大的平台,具有许多强大的功能,包括由一系列插件、主题、API 等支持的广泛的用户和内容管理。

即使是我们行业的大玩家也使用WordPress。像Smashing MagazineCSS-Tricks这样的网站使用 WordPress,尽管在这两种情况下都使用了显着的自定义实例。但是,使用 WordPress 可能是一项乏味的任务,尤其是在自定义和优化性能时。

我在 2015 年创办了一个小型博客。我的第一直觉是使用 WordPress。它给了我一个快速启动,因为我已经在使用 WordPress。我在DigitalOcean上创建了一个新的 droplet作为服务器,将Vesta设置为托管控制面板,并将 WordPress 安装为博客平台。最终,我设计并开发了一个全新的 WordPress 主题。唯一缺少的是内容。

我知道我想分享一些关于 Atom 的技巧,因为当时我正在使用这个很棒的编辑器。我发表了一些关于它的文章并与社区分享。

起初,我并没有太关注性能,因为我太专注于内容。过了一会儿,我注意到了一些性能问题。Google PageSpeed Insights 的分数很差,所以我努力修复和优化我的网站,获得了几乎完美的 99/100 分:

  • 我从 Nginx+Apache 切换到 Nginx+PHP-FPM。
  • 我使用 CloudFlare 来提高速度和保护。
  • 我使用 Cloudinary 来托管图像。
  • 我调整了我的主题并使用了关键 CSS。

唯一的警告是针对我当时不知道如何解决的 Google Analytics 缓存问题。

但是,如果 99/100 或 100/100 仍然无法获得您想要的性能怎么办?这就是静态页面生成器参与竞争的地方。

进入静态页面生成器和 Hexo

那么什么是静态站点生成器?

顾名思义,静态网站生成器是一个生成静态 HTML 文件的系统。提供静态 HTML 文件比动态创建页面要快得多。没有服务器渲染或编译,这通常会导致页面加载延迟。

在谈论性能时,必须考虑缓存。尽管缓存 WordPress 有多种技术,但与缓存静态文件不同,这通常不是一项简单的任务。提供缓存文件比从服务器提供实际文件性能更高,并且可以在加载网站时节省时间。

今年 6 月,Smashing Magazine 的 Vitaly Friedman 在我所在城市的一个研讨会上介绍了JAMstack。我从来没有听说过它,我很感兴趣。研讨会结束后,我研究了一下这个新概念,我意识到它是多么的棒。我意识到我的网站不需要 WordPress。

第一步是决定使用哪个静态页面生成器。我不知道有多少。我决定尝试一下Hexo 博客框架。它可以部署到Netlify,有一个从 WordPress 迁移的插件,并且使用我熟悉的 Node.js,这与分别基于 Ruby 和 Go 的 Jekyll 和 Hugo 不同。而且,正如我后来发现的那样,它的速度非常快。

将 WordPress 迁移到 Hexo

Hexo 安装非常简单。使用 npm 全局安装hexo-cli,运行hexo init命令,安装 npm 依赖项,然后瞧:

npm i -g hexo-cli hexo init <blog-name> cd <blog-name> npm install

要进行迁移,请安装hexo-migrator-wordpress 插件。此插件需要 XML 文件作为源。XML 文件可以通过 WordPress 导出工具导出,该工具可以在管理面板的Tools -> Export -> WordPress下找到。最后,输入hexo migrate命令完成导入。

hexo migrate wordpress <source>

剩下要做的就是检查结果。运行hexo server命令启动服务器并在给定地址打开浏览器。

hexo server

Markdown 及其局限性

Hexo 开箱即用地支持 Markdown。Markdown 是一种标记语言,许多人使用它来格式化 README 文件、评论和帖子。但它也可以用来写你的文章。它的语法直观且易于学习。

Markdown 的另一个优点是它可以生成干净且有效的 HTML。这允许开发人员创建干净且可维护的 CSS 规则来设置博客文章和页面的样式。

开发人员的生活绝非易事。我们经常遇到可能导致我们花时间在意想不到的事情上的问题。如果我们在此过程中学到了一些东西,那么我们就不会浪费这个时间,这是一件好事。同样的事情发生在我身上。我以为一切都很顺利,因为没有编译错误,但后来我注意到有些事情没有按预期工作。

例如,Codepen 演示没有加载。我搜索了一个 Hexo 插件,找到了一个。不幸的是,这个插件不是官方的,它会产生不可接受的 HTML 错误。我想贡献并解决问题,但最新的拉取请求已经有一年半多没有解决了。我决定更容易分叉存储库,解决问题,并在 Hexo 页面上发布插件,以便任何人都可以使用它。该插件被接受,我更新了内容,Codepen 演示就像一个魅力。

CanIUse 嵌入也出现了类似的问题。既然我知道如何创建一个 Hexo 插件,就没有理由不这样做了。我的hexo-caniuse 插件也发布了,我的hexo -cloudinary 插件也发布了,用于从 Cloudinary CDN 加载的响应式图像。

重新设计和优化

网站的设计是相当基础的。Hexo 在官方网站上免费提供了一些主题,但我想为我的 Hexo 网站提供一个独特的主题。在阅读了文档并学习了如何自定义 Hexo 之后,我开始从头开始开发一个原创主题。

为了创建新模板,我决定使用EJS 进行模板化。由于从未使用过 EJS,我将其视为学习新模板语法的机会。如果你不喜欢 EJS,Hexo 通过插件为你提供 Swig  Hamlpug支持

在重新设计过程中,我密切关注性能。通过遵循最佳实践,我们可以进一步加快我们的静态网站。将 JavaScript 文件放在文档底部并使用关键 CSS 技术为您的受众创造最佳体验。

SEO 优化对于谷歌等搜索引擎上的博客可见性至关重要。Hexo 有一个用于插入 Open Graph 数据的内置助手。Hexo 使用 YAML 文件来存储站点和主题配置。我使用主题配置文件来配置站点名称、描述和各种社交 ID。

将 Gulp 或 Webpack 添加到您的构建过程中总是很有帮助和推荐的。我使用 Gulp 压缩和压缩 CSS 和 JavaScript 文件,一切就绪。我可以部署它。

网络化

Netlify 是一个为网站和应用程序提供托管的平台,具有极快的性能。它将自己推销为一个统一的平台,可以自动化代码以创建高性能且易于维护的网站。

“只需推送您的代码,剩下的交给我们。”

如您所料,配置网站很简单:

  1. 设置域。
  2. 更改 DNS 记录。
  3. 设置构建和部署。
  4. 打开 SSL。

一切准备就绪后,我运行了一些基本测试来查看分数,包括Pingdom 网站速度测试网页测试Testmysite.io。结果非常好,因为该网站在每个工具上都获得了最高分。

CloudFlare

尽管分数很高,我还是想试试 CloudFlare,看看它还能在多大程度上加快网站速度。CloudFlare 一开始可能会让人不知所措,但学习如何使用它是基础。配置 CloudFlare 后,我重新运行了测试,结果甚至更好。

最后的测试是Google PageSpeed Insights。移动版和桌面版的得分几乎为 100%。问题是谷歌分析浏览器缓存。我设法通过使用 CloudFlare App for Google Analytics 解决了这个问题。

它要多少钱?

在带有 CloudFlare 的 Netlify 上使用 Hexo 无需任何费用。

Hexo 是一个开源平台,因此无论您决定如何使用它都是免费的。它拥有一个庞大的社区,并且是根据 StaticGen 排名第三的最流行的开源静态页面生成器。

Netlify 有一个开放的计划,它为我们的托管提供了很好的选择。图像也托管在 Cloudinary 的开放式计划中。CloudFlare 的免费计划允许我们配置大量规则,可以加快您已经快速的网站。它还允许我们修复 Google Analytics(分析)浏览器缓存问题。我也没有为域名付费,因为我使用了政府提供的免费个人域名。

这个项目设置将我的预算减少到最低限度。如果您的项目需要更高级的功能,静态页面生成器仍然可以为您节省几块钱。

提供缓存文件意味着 CPU 和带宽的使用会减少,这反过来意味着您可以使用更便宜的托管计划和不太强大的硬件。不仅如此,您的网站将更快,这意味着您的用户将喜欢在移动和桌面设备上浏览。而且,由于页面加载速度会影响 Google 搜索排名,因此您的网站排名会更高,从而获得更多访问者。

所有这一切意味着您可以将部分预算花在其他地方——例如,宣传您的网站或创建额外的内容,这将有助于获得更多收入。

静态站点生成器的案例

从 WordPress 迁移到静态页面生成器并非易事,而且绝对不是每个 WordPress 用户都应该做的事情。然而,由于它的插件、优秀的文档和简单的 API,Hexo 使这种转变相对轻松。

在决定是否要将产品迁移到静态解决方案之前,您需要了解静态页面生成器带来的限制,例如内容限制、Markdown 学习曲线和版本控制。

您还应该知道 Hexo 是一个博客框架。它非常适合知道如何使用文本编辑器和终端的开发人员和技术人员。如果您喜欢使用 Web 界面来管理您的内容,那么还有一个插件可以提供该功能。它被称为hexo-admin,非常流行。

如果您已经在使用 WordPress,那么您应该停下来思考一下您现在正在使用 WordPress 的哪些功能,以及哪些功能是必不可少的。你有复杂的内容结构吗?你在使用用户管理吗?您是否在 WordPress 实例上使用了很多插件,它们都是必需的吗?您对网站的性能满意吗?

如果大多数或所有这些问题的答案是否定的,那么您已经准备好使用静态页面生成器来增强您的网站。根据用例和您的要求,静态页面可以帮助最大限度地提高效率,同时最大限度地降低成本。另一方面,如果您需要 WordPress 的灵活性,您可能甚至不会考虑采取这样的举措。

顾名思义,动态站点是在后端、服务器上动态生成的。这意味着在每个请求上都会生成一个页面,这对于性能来说并不是最佳的。

与动态网站不同,静态网站仅提供静态文件。当用户发出请求时,静态文件由服务器提供,没有任何后端逻辑。

静态站点生成器是一个从模板创建静态文件的系统。最终输出是一组带有资产的 HTML 页面,通常是 CSS 和 JavaScript 文件。

a-guide-to-static-site-generators-using-hexo-and-wordpress-e6c0b17285cb