html延迟执行_前端程序员要学习的html前端页面的优化方法

1、首先说说浏览器的加载流程:

(1) 用户在地址栏中打开一个URL,浏览器首先会寻找该URL所在服务器,通过DNS服务器查询浏览器会获

得该URL所在网站的IP地址,然后向该地址发起请求,连接到服务器;

html延迟执行_前端程序员要学习的html前端页面的优化方法_第1张图片

(2) 建立连接后,向服务器发送http请求,请求对应的HTML文档;

(3) 解析HTML文档,目的是知道该页面需要哪些资源以及生成DOM树;生成DOM树和获取到相应需要的

html延迟执行_前端程序员要学习的html前端页面的优化方法_第2张图片

资源文件同时进行;解析HTML文档时,一旦发现一个标签,就会根据标签的要求分配对指定的资源进行下载,当DOM树生成后,DOMContentLoaded事件被触发;

理论上浏览器并行下载页面所需要的资源会带来更好的性能体验!

(4) Onload事件,当解析完成后,生成了DOM树,所有页面需要的资源文件都已经成功下载和执行后,

html延迟执行_前端程序员要学习的html前端页面的优化方法_第3张图片

浏览器会发出Onload事件并回调HTML文档中的onload函数。

2、对于优化页面速度的必要性:

页面的打开速度对于网站的优化有极大的意义,如果打开一个页面长时间处于白屏状态,如果超过5s,暴脾气

的我是会直接关闭这个网页;或者是页面加载出来了,但是比较慢,页面显示不完整,标签一直在转圈,页面处于不可交互状态,这也是一种很不好的体验;

html延迟执行_前端程序员要学习的html前端页面的优化方法_第4张图片

一个页面的打开速度快不快,可以用两个指标来描述,一个是ready时间,一个是load时间,chrome控制台可以看到;

一共是加载了19.2KB,ready时间是133ms,load时间是147ms;

3、分点介绍优化策略:

(1) 避免head标签js堵塞:

所有放在head标签里面的js和css都会堵塞渲染;如果这些css和js需要加载很久的话,那么页面就空白了;

html延迟执行_前端程序员要学习的html前端页面的优化方法_第5张图片

[html] view plain copy

test

用google的cdn加载一个jQuery文件是访问不了的,所以标签一直在转圈,页面没有任何显示;

html延迟执行_前端程序员要学习的html前端页面的优化方法_第6张图片

有两种解决办法,第一种是把script放到body后面,这也是很多网站采取的方法。第二种是给script加defer或者async的属性,一旦script是defer或者async延迟的,那么这个script将会异步加载,但不会马上执行,会在readystatechange变为Interactive后按顺序依次执行;

两者相同点:

加载文件时不阻塞页面渲染

对于inline的script无效

使用这两个属性的脚本中不能调用document.write方法

有脚本的onload的事件回调

html延迟执行_前端程序员要学习的html前端页面的优化方法_第7张图片

两者不同点:

async下,js一旦下载好了就会执行,所以很有可能不是按照原本的顺序来执行的。如果js前后有依赖性,用async,就很有可能出错。

如果一个script加了defer属性,即使放在head里面,它也会在html页面解析完毕之后再去执行,也就是类似于把这个script放在了页面底部。

(2) 减少head里面的css资源:

html延迟执行_前端程序员要学习的html前端页面的优化方法_第8张图片

css必须放在head标签里面,如果放在body里面会造成对layout好的dom进行重排造成页面闪烁;但是一旦

放在head标签里面又会堵塞页面渲染;所以要尽可能的减小css体积;

例:不要放太多base64在css里面,webpack构建工具常常会配置图片体积小于多少的直接转换成base64加载,这

里是挺影响性能的,一个是不能用到缓存机制,另一个就是加大了css的体积;个人建议上线项目直接把图片用cdn托

管;

在这里给大家推荐一个前端交流学习qun,想要学习的朋友可以加入进来,免费带你入门。前面是554,中间是224,后面是926.

(3)延迟加载图片:

对于很多网站来说,图片汪汪是占用最多流量和带宽的资源;

[html] view plain copy

window.onload = function(){

$("#imgTest").attr("src

你可能感兴趣的:(html延迟执行,html页面跳转的五种方法,js,刷新页面但是不闪烁)