Firebase Cloud Functions 生成的页面标记为减少服务器响应时间

Firebase Cloud Functions generated page flagged with reduce server response time

我有一个 Firebase 网站项目,现在一切看起来都不错,除了 Firebase Cloud Functions 生成的页面在 pagespeed insights 上标记为减少服务器响应时间。见解将产生 0.5 - 1.5 秒。

静态页面在移动设备上的得分为 99,在桌面设备上的得分为 86。使用云函数生成的页面,但是我在移动设备上得到的最高值是 75,最低值下降到 30.

这里有一些关于正在发生的事情的背景:

原始版本:

这个版本通常会让我得到 60-75 的分数。服务器响应时间仍然很高,但在 0.5 - 1.5

范围内一致

替代版本:

除了模板引擎渲染步骤之外,我在这个版本中使用相同的查询代码。

这个版本给出了最好和最差的分数。 60-75 我没有得到中等分数,我得到的最高分是完美的 100 和最低的是非常低的30。这样做的坏处是非常不一致,我无法确定原因。

是不是冷启动问题?

我已经阅读了有关冷启动的内容,所以我尝试试验是否是问题所在。

第一次尝试 我创建了一个函数来 ping 我的 Cloud Functions 使用的函数。我启动它并在我的桌面上每 10 秒循环一次。几分钟后,我检查了 Pagespeed 是否有任何效果,没有任何改进。

第二次尝试 我创建了一个函数来获取我在 Pagespeed 上测试的页面。我启动它并将它放在我的桌面上的循环中。我检查了 Pagespeed,它也没有任何效果。

所以我想我应该划掉 Cold Start 问题?还是我处理冷启动问题有误?或者可能是模板问题,因为使用两个不同的模板引擎会产生不同的结果?

无论如何,这就是我到目前为止所做的,关于如何减少 Firebase Cloud Functions 生成页面的服务器响应时间有什么想法吗?

冷启动可能是您的问题。

如果您使一个 Cloud Function 保持温暖,它将使具有该功能的容器保持温暖 - 这样下一位用户就可以在温暖的状态下使用该功能。

但是 - 如果您有多个用户尝试使用云功能,它会将一个暖容器分配给一个连接,然后将另一对冷容器分配给其他用户。这就是他们扩展的方式 - 构建更多容器。

我假设发生的情况是您的测试有时会连接到加热的容器 - 当它们在使用时,测试必须等待其他容器冷启动。

继续阅读 Cold Starts

A new function instance is started in two cases:

When a new function instance is automatically created to scale up to the load, or occasionally to replace an existing instance.