Jamstack只有在您这样做的情况下才是快速的

2020-05-19 22:23:22

JAMstack经常被宣传为提供高性能站点的好方法。它甚至是Jamstack.wtf上列出的第一个好处,该指南将JAMstack的概念集中在一个直截了当的指南中,以鼓励其他开发人员采用这种工作流程。但是太多的JAMstack站点非常慢。

@matthewcp@ust infagnani@gatsbyjs@kylemathews@addyosmani纵观全套痕迹,现代盖茨比制作的页面似乎需要2-3倍的时间才能成为互动页面。这是不对的。盖茨比/npm/对内容访问征税的倒退反应。在不那么慷慨的时候,我甚至会说这是不道德的。

盖茨比是一个容易攻击的目标(还有许多其他目标),因为目前它没有针对开箱即用的性能进行优化,尽管';推广了什么。修复它是可能的,例如使用这个插件,我相信反应良好的开发人员可以让它闪耀光芒,但这应该是默认的,而不是事后才想到的。

正如扎克·莱瑟曼在“十一”杂志的“新业绩排行榜”中提醒我们的那样,“十一”非常不同:

ELEVENTY没有做任何开箱即用的特殊优化来让您的站点变得更快。这并不能保护您避免创建速度较慢的站点。但重要的是,它也没有添加任何额外的东西。

大多数速度较慢的JAMstack站点的问题是它们加载了大量JavaScript。请记住,任何添加的JavaScript都必须发送到浏览器,浏览器也需要进行更多的计算。它会迅速影响性能。

有时,使用服务器端构建就足以从API获取数据并将HTML提供给所有访问者,这对性能要好得多。

例如,swyx编写了关于使用Svelte实现Web提及的客户端Web提及。欢迎任何推广Web提及并简化其采用的文章!但是,即使它很适合Web提及和Svelte的演示,我也不建议在客户端这样做。

仅在构建站点时调用webentio.io API,这应该比访问者查看页面的频率低。

缓存对webention.io的请求结果和最新请求的时间戳,以便下一个请求只请求新的web提及。

它减轻了webention.io的压力,因为每个构建只有一个请求,而客户端实现将为每个页面视图发出更大的请求(甚至是多个请求,使用分页)。

我的网站在2020年4月收到了75次网络提及。我可能在同一时期内构建了100次,所以让我们假设有100个请求发送给webention.io,但响应很少。

在同一时期,我的网站有3,746次页面浏览量(低估了,我仍然在使用谷歌分析🤷‍♂️),这会向webention.io发出3,746次请求,并获得大量响应。

用户的性能要好得多,因为HTML已经在服务器上进行了计算并得到了静态服务。

每个人都应该知道,Aaron Parecki免费提供了令人惊叹的webention.io服务,而且现在大多数Web提及用户似乎都在使用它,所以对它的API友好的感觉更好。

如果你知道你收到了很多非常有用的网页提及,你必须向你的访问者展示,你可以用一些客户端来增强服务器端生成的列表。

但请记住,添加到页面中的每个JavaScript都是有成本的,因此少量额外的Web提及必须是真正有用的。

首先,尝试在站点构建之后等待一段时间,然后再进行客户端API调用。保持构建时间戳对客户端JavaScript可用,并等待一小时、一天或更长时间,具体取决于web提及的频率。你甚至可以使用年龄页面来查询wbemention.io中可能收到较少网络提及的较旧内容,就像Aaron Gustafson甚至在他的Jekyll插件中对服务器端调用所做的那样。

然后,在localStorage或IndexedDB中跟踪用户对API的调用,这样不久之后您就不会再次进行这些调用。您甚至可以使用服务工作者来缓存请求及其时间戳。

我同意Web提及不是最复杂的用例,用来说明您应该在构建时尽可能多地从服务器调用API,而不是从客户端调用:

因此,是的,许多其他用例使得客户端API调用是必要的,或者比服务器端API调用更好,我理解这一点。

在当前的JAMstack趋势中,这也是我不太喜欢的,推广JavaScript和API要比推广标记多得多。

这使得这里有一堆东西变得更加明显,这对堆栈非常有用。

当然,它读作AJMstack而不是JAMstack,所以我打赌我不会成功地将其推广到…。🤷‍♂️

但至少感觉更准确,它表明JavaScript是API和标记之间的纽带。

它甚至允许将其作为一个很棒的渐进式增强平台,因为我们可以从普通老式开始(我听到的是无聊吗?)。标记…。

CSS Grid和FlexBox使用起来非常有趣,我只花了几分钟就明白了,看看这个样式表!💪↩︎。

如果您想分享错误或建议对此内容进行改进,请编辑Github上的源代码。

@nhoizey对Jamstack中的性能构建采取了一个有趣的做法,这涉及到我个人一直在努力建立的意识-仅仅因为J代表JavaScript,并不意味着所有事情的解决方案都是客户端脚本。Nicolas-hoizey.com/文章/2020年/…。

#Boostmark";JAMstack只有在您这样做的情况下才是快速的";,@nhoizey Nicolas-hoizey.com/ws/2020/…。我真的很喜欢MStack的概念。客户端JS往往会使网站变慢,请明智地使用它。

et si on faisait d';avantage la Promoting de la Mstack?";JAMSTACK只有在您做到这一点的情况下才是快速的。/nicolas-hoizey.com/ws/2020/…。#JAMstack。

[书签]";JAM堆栈只有在您这样做的情况下才是快速的";,Nicolas Hoizey(@nhoizey)nicolas-hoizey.com/ws/2020/…