Meteor:消除上层内容中的渲染阻止JavaScript和CSS

fif*_*nce 11 performance meteor

如何在Meteor中"消除阻塞内容中的渲染阻止JavaScript和CSS"?

在此输入图像描述

Kri*_*tig 4

真相TM

在为这个问题实现一个可行的解决方案之后,我想说,对你的问题的正确TM答案是:“不,这正是使用如此复杂的 javascript 框架所得到的结果。”

但事实是,在慢速网络上加载流星可能需要一分钟多的时间。它是巨大的。这导致了糟糕的用户体验。所以我认为它会从整体上改进流星应用程序,使其具有加载屏幕之类的功能。

我正在编写一个包(我将在完成第一个“主要”版本后立即更新它)kriegslustig:altboiler

解决方案

altboiler 我在此 repo 中记录了我正在使用的解决方案。写得太长了,总结一下:

  • 使用WebApp.connectHandlers
  • 依次通过WebApp.clientPrograms[WebApp.defaultArch].manifest
  • 通过AJAX获取里面所有的URL
  • 缓冲然后将它们编译成一个script标签
  • 将该script标签插入到head
  • 最后自毁加载脚本

这样您就不会在 Google Pagespeed 上收到该错误。

潜在的

您可以首先提供加载屏幕,也可以渲染整个站点,而不需要连接到服务器的部分。

表现

我预计这会加载 Meteor 慢很多,但在我最初的测试中,Meteor 实际上加载得更快。但我的测试并不完全科学。我只是将其加载到 Chrome 模拟器中并限制与50kbps. 另外,我在开发实例上执行此操作,因此它是未压缩的。但结果仍然有些相关:

altboiler: 1.7 分钟
altboiler: 2.8 分钟

只有当发出大量请求时,ajax 请求才会表现得更好。因此,对捆绑实例的影响可能会稍差到稍好。

缺点

它可能会干扰包裹spiderable,但我不这么认为。当我为包编写一些测试时,我会对其进行测试。