magento 2 javascript合并和require.js。表现的危害是什么?

javascript的合并,在magento 2.实际上,rection.js加载的大多数文件都不合并。有没有解决解决这个问题的解决方案?让我们搞清楚。

挑战一个。负面影响“Merge of JavaScript” on Magento 2 stores’ performance

关于启用母语Magento 2个功能的积极影响,js / css文件优化的特征存在非常常见。但是,这不是真相,因为这个功能不按预期工作。

您可以遵循以下方式的文件合并:

店> Configuration > Advanced > Developer > Javascript Settings

下面您可以在启用Magento 2和IT之后启用文件的本机功能之前查看性能数据。 

在magento 2中合并文件2

此页面实际上包括从浏览器到服务器的167个请求。如您所见,167个文件中的144个是JavaScript文件。 然后我们启用JavaScript文件的合并并再次检查。

合并JavaScript.

我们现在有什么? 165个请求,只有3个144张文件合并。这是实际结果。预期结果是24个请求(167-144 + 1)。

事实是:JavaScript Merge的本机功能不合并所有JS文件。它仅限于在HTML页面上声明的那些js文件。这意味着rection.js加载的文件不会合并。

启用JavaScript捆绑 是Magento 2中的另一种不明确的选项。它以下面的方式工作:模块的所有脚本都被拍摄并合并到单个脚本中。启用此选项时–无论是否在页面上使用,都将加载整个JavaScript内容。但遗憾的是,页面大小将增加,这对商店性能不利。 

启用JavaScript.

挑战二。在玛托托2中需要的工作。

与Require.js相关的选项。看起来不太清楚。让’S看起来更近。 

这是通过Require.js加载脚本的原则的原则如下所示,其中:

  • 绿色圆圈是脚本。
  • 黄色圆圈是可能需要的3个图书馆。
  • 蓝色圆圈代表第三个图书馆需要的3个图书馆。
  • 灰色方块是第一个蓝圈需要的3个HTML模板。

关于依赖性的数据

关于这些依赖项的数据与其内容一起存储在脚本文件中。为了控制脚本是否需要其他资源,Require.js应该下载脚本并检查其内容。 它证明了为什么需要.js以下列方式工作:

“我需要文件a,所以我打算下载它。完成后,我开始执行它。但!它需要B和C文件。我还在下载这些文件并执行它们。文件B需要文件D,E和G.最后,一切都已完成,我可以开始执行所有脚本。“

在Magento 2的情况下,该队列可能包括8-10个周期。此外,浏览器应在循环上以其设置下载Require.js文件本身。

带http / 2–所有这些网络协议’S福利由Require.js逻辑划分。如果您没有http / 2–您对同时连接的浏览器限制面临的一个挑战。 在一个真正的商店,它看起来像这样: 

require.js.

在此屏幕截图上,您可能会看到HTTP协议限制导致的6个同步连接的限制。应用HTTP / 2时,不会存在这样的限制,但由于RESCEL.JS逻辑,组将留下。

解决方案

在这种情况下可以做些什么?

主页上有144个脚本,类别页面上的156个脚本,在Magento 2默认情况下的产品页面上的166个脚本。 并且一个涉及众多第三方模块的真正商店将使挑战更加严重。

幸运的是,有一个真正的解决方案,由Aitoc团队制作,被称为 Google页面速​​度优化Magento 2。该工具能够以无痛的方式和最有效的方式解决JS和CSS文件的所有问题。它有效地消除了Require.js中的依赖项’浏览器为什么浏览器以单个请求下载所有JS文件。 

除了JavaScript文件之外,强大的Google页面速​​度优化工具还支持样式表,内联小CSS的合并和缩小功能,并提供CSS的推迟解析。

你还没有尝试过这种强大的解决方案吗?你还在等什么?