【问题标题】:Removing render blocking JS and CSS causing issue in my WordPress website删除导致我的 WordPress 网站出现问题的渲染阻塞 JS 和 CSS
【发布时间】:2019-10-22 08:00:05
【问题描述】:

我正在努力提高我网站的速度。我正在使用 PageSpeed Insights 来检查我的网站性能,它告诉我删除渲染阻塞 java 脚本和 css。所以我做到了,并且知道它在我的网站设计中引起了问题。那么我应该怎么做才能消除渲染阻塞而不会给我的网站设计造成问题。

【问题讨论】:

  • 通常您需要等待一些脚本加载后才能运行您的代码。例如,在使用任何 jQuery 函数之前等待 jQuery 加载

标签: wordpress performance pagespeed


【解决方案1】:

渲染阻塞 CSS

如果您将外部资源用于 CSS,则渲染阻止 CSS 将始终显示在 Google Page Speed Insights 上。

您需要做的是在网页头部的<style></style> 标记中内联所有“首屏”样式。

我会警告你,这并不容易,声称这样做的插件通常不起作用,这需要努力。

解释发生了什么:-

  1. 用户导航到您的站点并且 HTML 开始下载。
  2. 随着 HTML 的下载,浏览器正在尝试确定如何正确呈现该 HTML,并期望对这些元素进行样式设置。
  3. 一旦 HTML 下载完成,如果它没有找到出现在折叠(可见页面的初始部分)上方的元素的样式,那么它还不能呈现任何内容。
  4. 浏览器会查找您的样式表,下载后即可呈现页面。

第 4 点是 render blocking,因为这些资源正在阻止页面呈现初始视图。

要实现这一点,您需要计算出在不滚动页面的情况下显示的每个元素,然后找到与这些元素关联的所有样式并将它们内联。

渲染阻塞 JS

这个更容易修复。

如果您能够在外部 JS 上使用 async 属性,请使用它。

但是请注意,在很多情况下,如果您一开始就没有为它设计,这会破坏您的网站。

这是因为async 会尽快下载并执行您的 JS 文件。如果一个脚本需要另一个脚本才能运行(即您正在使用 jQuery),那么如果它在另一个脚本之前加载,它将引发错误。 (即您的 main.js 文件使用 jQuery,但在它之前下载。您调用 $('#element') 并收到 $ is undefined 错误,因为尚未下载 jQuery。)

如果您不具备正确实现async 所需的知识,则最好使用defer 属性。

在 HTML 完成解析之前,这不会开始下载脚本。但是它仍然会按照 HTML 中指定的顺序下载和执行脚本。

【讨论】:

    【解决方案2】:

    在script标签中添加async,并将css和js放在页面最后

    【讨论】:

    • 我试过了,它先加载我的 HTML,然后加载 JS 和 CSS,但加载我的客户端没有的 js 和 css 需要相当长的时间(1 到 1.5 秒)不喜欢。
    • 正常时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-04
    • 2022-06-08
    • 2020-10-28
    • 2014-01-02
    • 1970-01-01
    相关资源
    最近更新 更多