1. 从输入url到得到html的详细过程

  1.1 加载资源的形式

       输入 URL 或跳转页面 加载 html

  1.2 加载一个资源的过程

    浏览器根据DNS服务器得到域名的IP地址

    向这个IP的机器发送http请求

    服务器收到后 处理并返回 http请求

    浏览器得到返回内容

  1.3 浏览器渲染页面的过程

    根据 HTML 结构生成 DOM Tree

根据 CSS 生成 CSSOM

    将 DOM 和 CSSOM 整合形成 RenderTree 渲染树

    浏览器根据 渲染树 开始渲染

    遇到 <script> 时 会执行并阻塞渲染 因为js有权利改变 dom 结构 所以要等着js脚本执行

2. window.onload 和 DOMContentLoaded 的区别

window.onload : 页面的全部资源加载完才会执行,包括图片视频;

DOM 渲染完即可执行 此时图片 视频还没有加载完

3 前端性能优化

3.1 加载资源优化

1 静态资源的压缩合并

2 静态资源缓存

3 使用CDN让资源加载更快

4 使用SSR后端渲染,数据直接输入到HTML中

3.2 渲染优化

1 css在前 js放后面

2  懒加载 (图片懒加载,下拉加载更多)

3 减少DOM查询,对DOM查询做缓存

4 减少 DOM 操作,多个操作尽量合并在一起执行

5 事件节流

6尽早执行操作 如 DOMCotentLoaded

例子:6.1 资源合并

<script src="a.js"></script>
<script src="b.js"></script>
<script src="c.js"></script>
<!--资源合并-->
<script src="abc.js"></script>

6.2 缓存

通过连接名称控制缓存

<script src="abc_1.js"></script>

只有内容改变的时候,连接名称才会改变

<script src="abc_2.js"></script>

6.3 使用CDN

比如一些常用的js文件使用放在CDN上的,例如:bootstrap,zepto.min.js

7. 图片懒加载,src的占位图片 可以缓存,可以在加载完页面之后,在执行真正的图片的替换。

<img id="img1" src="preview.png" data-realsrc="abc.png">

<script type="text/javascript">
var img1 = document.getElementById('img1');
img1.src = img1.getAttribute('data-realsrc');
</script>

8  缓存 DOM 查询

9 合并 DOM 插入

10。事件节流

如果输入很快,第一次生成的timeoutId都会被下一次的 keyup事件,清空。 但是一旦停下输入,最后一次的keyup事件 将会保存下来,100ms 后 执行 change事件。

JavaScript 页面渲染的更多相关文章

  1. "Javascript高性能动画与页面渲染"笔记

    前言:好久没翻阅我的gmail邮箱了,午休时就打开看了一下,看到InfoQ推荐的一篇名为“Javascript高性能动画与页面渲染”文章,粗略的看了一下,很赞!讲的很详细,对好些细节讲的都很好,很通俗 ...

  2. 【前端性能】高性能滚动 scroll 及页面渲染优化

    最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...

  3. 【前端性能】高性能滚动 scroll 及页面渲染优化--转发

    本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的关系,节流与防抖,pointer-events:none 优化滚动.因为本文涉及了很多很多基础,可以对照上面的知 ...

  4. 高性能滚动 scroll 及页面渲染优化

    最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作. 本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲染的 ...

  5. 加载 CSS 时不影响页面渲染

    转自:http://www.oschina.net/translate/loading-css-without-blocking-render 本文展示了一种技术,它能通过异步下载样式表,以阻止它们的 ...

  6. 前端高性能滚动 scroll 及页面渲染优化

    前言 最近在研究页面渲染及web动画的性能问题,以及拜读<CSS SECRET>(CSS揭秘)这本大作.本文主要想谈谈页面优化之滚动优化. 主要内容包括了为何需要优化滚动事件,滚动与页面渲 ...

  7. 多进程浏览器、多线程页面渲染与js的单线程

    线程与进程 说到单线程,就得从操作系统进程开始说起.在早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位.任务调度采用的是时间片轮转的抢占式调度方式,而进程 ...

  8. JS学习笔记:(一)浏览器页面渲染机制

    浏览器的内核主要分为渲染引擎和JS引擎.目前市面上常见的浏览器内核可以分为这四种:Trident(IE).Gecko(火狐).Blink(Chrome.Opera).Webkit(Safari).这里 ...

  9. 渲染引擎 & 页面渲染流程 & 阻塞

    文档对象模型(Document Object Model,简称DOM) 浏览器渲染引擎 一个渲染引擎 主要模块: HTML 解析器 解释 HTML 文档的解析器,将 HTML 文本 解析成 DOM 树 ...

随机推荐

  1. laydate年份选择,关闭底框,点击指定年份就选择然后关闭控件,翻页不选择也不关闭控件

    如下图,翻页不选择也不关闭.点击指定年份时再选择和关闭控件 代码如下 // 默认没有选择,把判断赋值当前时间 var iYearCode = parseInt(new Date().getFullYe ...

  2. Java中String做为synchronized同步锁

    synchronized (("" + userId).intern()) { // TODO:something } JVM内存区域里面有一块常量池,关于常量池的分配: JDK6 ...

  3. RocketMQ之六:RocketMQ消息存储

    一.RocketMQ的消息存储基本介绍 先看一张图: 1.Commit log存储消息实体.顺序写,随机读.2.Message queue存储消息的偏移量.读消息先读message queue,根据偏 ...

  4. PAT甲级 散列题_C++题解

    散列 PAT (Advanced Level) Practice 散列题 目录 <算法笔记> 重点摘要 1002 A+B for Polynomials (25) 1009 Product ...

  5. 20191011-构建我们公司自己的自动化接口测试框架-Util的读取excel常用方法模块

    包括获取excel的sheet名字,设定excel的sheet,读excel,写excel等常规操作. from openpyxl import Workbook from openpyxl impo ...

  6. CCF 2017-09-2 公共钥匙盒

    CCF 2017-09-2 公共钥匙盒 题目 问题描述 有一个学校的老师共用N个教室,按照规定,所有的钥匙都必须放在公共钥匙盒里,老师不能带钥匙回家.每次老师上课前,都从公共钥匙盒里找到自己上课的教室 ...

  7. Docker启动Elasticsearch报错vm.max_map_count

    报错信息如下 max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 临 ...

  8. VBA常量(八)

    常量是一个命名的内存位置,用于保存脚本执行期间固定(无法更改)的值.如果用户试图更改常量值,则脚本执行结束时会出现错误.常量声明与声明变量相同. 以下是命名常量的规则 - 常量名称必须使用一个字母作为 ...

  9. 关于jQuery的源码学习

    注:该思维学习自另一个博客:https://blog.csdn.net/software0017/article/details/80317348 以下为我自己总结的jQuery结构:

  10. ztree在onCheck()方法中防止因触发联动关系导致页面多次渲染而卡死的问题

    这几天在项目中遇到了要使用树形选择框, 而且要求比较复杂,具体叙述如下: 首先是有个选择框,左边选择是适用的商品,右边显示已经选择的商品.也就是说,左边每次勾选操作,都要触发一个事件去刷新右边的页面, ...