比较静态站点生成器的构建时间
考虑到大量的选项,选择静态站点生成器(SSG)可能会令人生畏。尽管许多文章比较了流行的选择,但真正明智的决定需要了解现实世界的表现。这项基准研究分析了在六个流行的SSG中建立时间,以揭示速度差异的差异,而且揭示了这些差异的根本原因。这不仅仅是找到最快的;这是关于理解权衡。
每个SSG都共享一个核心过程:获取输入数据,应用模板引擎并生成HTML。这个“构建”过程是我们比较的重点。
这不仅仅是一场速度比赛(尽管雨果自称为“世界上最快”的标题值得调查!)。目标是深入研究构建时间变化及其原因。消除慢速表演者或盲目偏爱的速度冠军将是一个过分简化。
基准测试
我们的初始测试采用了一种简化的方法:六种流行的SSG和一种直接的数据格式。这为将来扩展到更多SSG和复杂的数据结构提供了基准。参与者:
- 高度
- 盖茨比
- 雨果
- 杰基
- 下一个
- nuxt
测试方法:
- 数据:带有随机生成的标题(前染色)和三段主体的降级文件。不包括图像。
- 环境:测试是在一台机器上依次进行的;相对比较比绝对值更重要。
- 输出:使用每个SSG的默认启动器配置,纯文本HTML。
- 构建类型:“冷运行”,清除了缓存和为每个测试重新生成的降低文件。
这些是使用基本降压和未风格的HTML输出的基准测试。虽然在技术上可部署,但它们并不能完全代表现实世界的情况。这提供了基本的比较。实际构建时间将根据开发人员的选择和项目复杂性(通常会增加构建时间)而有所不同。例如,“冷构建”与现实情况有很大不同的情况,即缓存(尤其是在盖茨比)大大减少了构建时间,通常会减少一半或更多。增量构建仅关注更改的文件,也不包括在此初始阶段中。
SSG两层
我们将发电机分为两个层:
- 基本:基本上是命令行接口(CLIS)处理数据并输出HTML。资产处理的扩展是可能的,但在这里未进行测试。 (高度,雨果,杰基尔)
- 高级:提供静态站点生成以外的其他功能,例如服务器端渲染,无服务器功能和框架集成。更动态的开箱即用。 (盖茨比,下一个,nuxt)
包括每个层的三个SSG。
假设
我们的假设:由于开销增加,高级SSG将比基本SSG慢。
我们预计:
线性(ISH)和快速:雨果和高度,分别利用go and node.js,应显示高速,尤其是在较小的数据集的情况下。缩放应该放慢脚步,但他们应该仍然是表现最好的人。
缓慢,然后快速(ER),但仍然慢:基于框架的SSG(Gatsby,Next,Nuxt)使用WebPack最初由于开销而显得很慢。但是,随着较大的数据集,我们预计差距会缩小,尽管它们将保持在基本的SSG之后。由于缺乏服务器端组件,盖茨比被预计是高级组中最快的。与REACT相比,由于潜在的VUE.JS开销可能较低,因此NUXT预计将胜过下一步。
Jekyll:通配符: Ruby的表现是一个因素。虽然缺少框架开销,但其速度尚不确定,尤其是在大规模上。
结果
测试代码和结果可在GitHub [链接到GitHub repo]上找到。在三个数据集中进行了十次运行:
- 基础:单文件
- 小站点: 1到1024个文件,每次加倍。
- 大型站点: 1000至64,000个文件,每次加倍。 (最初计划有128,000个,但用一些框架打了瓶颈。)
[在此处包括图表/图表]
调查结果摘要
雨果的主导地位:正如预测的那样,雨果是所有数据集中最快的,即使在基础构建中也表现出色。
分层的性能:在小型站点测试中,基本和高级SSG之间的性能差异很明显。令人惊讶的是,接下来和高高显示64,000个文件的性能。 Jekyll始终优于高度。
盖茨比(Gatsby)出乎意料的缓慢:盖茨比(Gatsby)与我们的假设相反,是最慢的,表现出最戏剧性的性能曲线。
差异的规模:性能差异的幅度大于预期。雨果(Hugo)在一个文件中比盖茨比(Gatsby)快250倍,在64,000个文件中快40倍。尽管雨果保持更快,但差距随着站点尺寸的增加而缩小。
解释
SSG维护者的反馈表明,较慢的构建时间通常反映出功能和开发人员的经验增加。基本工具优先考虑HTML生成,而高级工具提供了更多功能。
关键要点:扩展jamstack站点提出了独特的挑战。最佳SSG取决于您项目的特定需求以及您对构建时间与开发人员体验的容忍度。使用Gatsby的大型图像较重的站点可能具有较慢的构建,但提供了广泛的插件支持和结构化的开发环境。 Jekyll可能会提供更快的构建,但需要更多的手动组织。
就个人而言,由于优化策略在大规模上至关重要,但由于其可靠的功能和插件生态系统,Gatsby(或下一个)对于大型客户项目而言是优选的。对于精细颗粒的控制和性能优先考虑的较小的个人项目,Hipytys受到青睐。
最终,选择不仅仅是速度,而是最适合您的项目和工作流程。
下一步
这只是开始。未来的改进包括更现实的场景,较大的数据集,专用的测试机以及更多的SSG包含。鼓励协作来完善测试方法并扩大基准的范围。
以上是比较静态站点生成器的构建时间的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

您是否曾经在项目上需要一个倒计时计时器?对于这样的东西,可以自然访问插件,但实际上更多

我关注的一件事是Lea Verou' s conic-Gradient()Polyfill的功能列表是最后一项:
