PageSpeed-在首屏内容中消除渲染阻止的JavaScript和CSS


15

我正在运行magento 1.9,并且正在RWD slider主页上使用Magento 1.9附带的。

Google PageSpeed不喜欢这样,并说:

在首屏内容中消除阻止渲染的JavaScript和CSS

如何针对调用滑块的Java脚本文件执行此操作:

http://www.MYDOMAIN/media/js/sdhfksjfhdsjvbskj8e4w.js

Answers:


14

我解决了Magento-1.9.x上的Remove render-blocking JavaScript问题,如下所示:

<script src="filename.js"></script>
Replace with Following:  
<script src="filename.js" defer></script>
<script src="filename.js" async="async"></script>

要么

<action method="addJs"><script>prototype/prototype.js</script></action>  
Replace with Following:  
<action method="addJs"><script>prototype/prototype.js</script><params>defer</params></action>  
<action method="addJs"><script>prototype/prototype.js</script><params>async</params></action>

提示:它可能位于基本主题上

关于第38行的app \ design \ frontend \ base \ default \ layout \ page.xml,

如果您使用活动主题,则将rwd的不同路径ex设置为app \ design \ frontend \ base \ default \ layout \ page.xml


您在哪里添加?在哪个magento xml文件中?
styzzz

@styzzz,是的,还有头文件/ footer文件。它更好地找到了谷歌建议阻止的js
matinict 2015年

@styzz它位于基本主题应用程序\ design \ frontend \ base \ default \ layout \ page.xml上,位于第38行。如果您使用活动主题,则将rwd的不同路径ex用作app \ design \ frontend \ base \ default \ layout \ page.xml
Matinict

1
我关注你了。它解决了Google网页洞察中的问题,但是
却给

@MDSHOEBMIRZA然后它没有解决问题
Stevie G

5

“ Mohan Gs”描述的技术在这里不起作用。

由于js路径/media/js/,似乎他使用js合并。这意味着,所有以xml标准方式添加的js文件

  • <action method="addJs">...
  • <action method="addItem"><type>js</type>..

将合并成一个大的 /media/js/<hash>.js

Magento核心js文件已添加

  • <action method="addJs"><script>prototype/prototype.js</script></action>

也这样

还有许多使用内联js的模板,这取决于head js文件定义的对象/功能。

此时,仅将head js文件移至底部还不够。您必须将所有内联js声明移到头部js之后和之前</body>

在所有/许多情况下,无法将内联js与模板分开,因为它们正在使用模板特定的变量。

您只能使用一般的方法,例如解析最终的html,然后以正确的顺序将这些内容一起移动。

因此,看看扩展名Pagespeed


很抱歉-我仍然不知道该怎么办。我应该编辑哪个文件?您是说我们应该编辑XML文件并将调用JS的行移到其他部分吗?我可以编辑XML文件,但不确定哪一个以及将调用JS脚本的行移到哪里。请告诉我。
styzzz

我的回答应该说明,您不能将javascript xml调用移至其他部分。这将导致错误。您可以尝试上述扩展名。
Steven Fritzsche 2015年

嗨,史蒂文,我尝试了您的模块。没有改变。没有JavaScript或CSS被移动。管理员端Pagespeed配置也显示404
Sandeep,2015年

@Sandeep:这不是您发表评论的地方。请在github上创建详细的报告/问题。
史蒂文·弗里茨彻

4

该代码表示​​等待整个文档加载,然后加载外部文件defer.js

<script type="text/javascript">
    function downloadJSAtOnload() {
        var element = document.createElement("script");
        element.src = "defer.js";
        document.body.appendChild(element);
    }
    if (window.addEventListener)
        window.addEventListener("load", downloadJSAtOnload, false);
    else if (window.attachEvent)
        window.attachEvent("onload", downloadJSAtOnload);
    else window.onload = downloadJSAtOnload;
</script>

这些是您需要遵循的步骤。

  1. 复制上面的代码。

  2. 将代码粘贴到HTML中的</body>标记之前(靠近HTML文件底部)。

  3. 将更defer.js改为您的外部JS文件的名称。

  4. 确保文件路径正确。示例:如果仅放置defer.js,则文件defer.js必须与HTML文件位于同一文件夹中。

有关更多详细信息,请参阅本文


1

这是开放源代码扩展程序,用于解决https://github.com/mediarox/pagespeed

当前功能

  • 将所有Javascript标签(head和inline)移到底部。({stripped_html} {js})
  • 包括条件js单元({多个js标签})
  • 包括外部js标签,包括“内联” js标签
  • 将所有CSS标签(head和inline)移到底部。({stripped_html} {css})
  • 包括条件CSS单位({多个CSS标签})
  • 包括外部CSS标签
  • 包括内嵌CSS标签

兼容性

从Magento 1.5.x到Magento 1.9.x。

后端配置

默认情况下,所有模块(Pagespeed_Js,Pagespeed_Css)均处于禁用状态。

配置路径:系统>配置>高级> Pagespeed

怎么运行的 ?

简单解析事件“ controller_front_send_response_before”上的最终html流。


转至GitHub,发现该脚本的最新更新时间为2015年9月23日。此外,还没有提及Magento2。它是否适用于magento 2?如果没有其他建议/建议?
marikamitsos
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.