博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网页性能优化:防止JavaScript、CSS阻塞浏览器渲染页面
阅读量:5835 次
发布时间:2019-06-18

本文共 1271 字,大约阅读时间需要 4 分钟。

  网页中引用的外部文件: JavaScritp、CSS 等常常会阻塞浏览器渲染页面。假设在 <head> 中引用的某个 JavaScript 文件由于各种不给力需要2秒来加载,那么浏览器渲染页面的过程就会被阻塞2秒,直到该JS文件下载并执行完后才继续。

  前端性能调优时必须排除任何潜在的渲染阻塞点,让浏览器在最短时间内渲染出整体页面。

1、JavaScript为何会阻塞?

              

Hello World

  上述代码中,当浏览器解析 script 标签时,由于浏览器并不知道 page.js 将会对页面做什么改变,所以浏览器需要停止渲染,下载并执行 page.js 后再继续渲染后面的内容。如果 page.js 的下载过程中出现任何延迟,也将影响整个页面的渲染。

2、优化方案:

(1)Inline JavaScript:

  如果页面的初始渲染的确依赖于page.js,我们可以考虑使用内联JavaScript。

              

Hello World

(2)推迟加载:

  如果页面的初始渲染并不依赖于page.js,我们可以考虑推迟加载page.js,让其在页面初始内容渲染完成后再加载。

          

Hello World

(3)异步加载

  HTML5允许我们给 script 标签添加属性: "async" 来告诉浏览器不必停下来等待该脚本执行,什么时候下载完什么时候执行该脚本就可以了。这样的话浏览器会边下载page.js边渲染后面的内容。

              

Hello World

  然而如果某个JS被其他JS所依赖,那么就不能使用异步加载了。

                  

Hello World

  由于使用异步加载后,JS不再顺序执行。上例中 jq-plugin.js 依赖于jQuery,如果 jq-plugin.js 先下载完成,此时jQuery还没下载完,那么浏览器就会先执行 jq-plugin.js 导致出错。当然这类问题可以通过引入依赖管理来解决,这是另外一个主题,就不展开讨论了。

3、CSS为什么会阻塞?

  由于CSS决定了DOM元素的样式、布局,所以浏览器遇到CSS文件时会等待CSS文件加载并解析完后才继续渲染页面。

4、优化方案:

(1)Inline CSS

  我们可以将那些页面首屏渲染需要用到的CSS代码加入Inline CSS。

(2)推迟加载CSS

  对于那些首屏渲染不需要用到的CSS,我们可以依旧使用文件形式并在页面内容渲染完成后再加载。

              
Hello, world!

5、结论

  在页面加载时我们需要让页面内容尽快呈现给用户,页面初始渲染所需要的JS和CSS可以直接在 <head> 标签中以代码形式插入。

  所有的外部文件引用可以放在页面内容之后,对于JS文件也可以采用异步加载。

转载地址:http://kvucx.baihongyu.com/

你可能感兴趣的文章
冲刺第九天 1.10 THU
查看>>
传值方式:ajax技术和普通传值方式
查看>>
Linux-网络连接-(VMware与CentOS)
查看>>
寻找链表相交节点
查看>>
AS3——禁止swf缩放
查看>>
linq 学习笔记之 Linq基本子句
查看>>
[Js]布局转换
查看>>
Hot Bath
查看>>
国内常用NTP服务器地址及
查看>>
Java annotation 自定义注释@interface的用法
查看>>
Apache Spark 章节1
查看>>
phpcms与discuz的ucenter整合
查看>>
Linux crontab定时执行任务
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
选择排序
查看>>
SQL Server 数据库的数据和日志空间信息
查看>>
前端基础之JavaScript
查看>>
自己动手做个智能小车(6)
查看>>
自己遇到的,曾未知道的知识点
查看>>