黑马程序员技术交流社区

标题: 常见的Web性能优化方法总结 [打印本页]

作者: 逆风TO    时间: 2020-4-28 13:41
标题: 常见的Web性能优化方法总结
web性能优化
一、页面优化
1、减少HTTP请求数量

1、从设计实现层面简化页面:尽量将页面设置成百度首页那样,保持页面简洁、减少资源的使用。
2、合理设置HTTP缓存:合理设置缓存可以大大地减少HTTP请求,怎么叫合理呢?原则很简单,能缓存越多越好,能缓存越久越好。
3、资源合并和压缩:尽可能将外部脚本、样式进行合并,多个合为一个;Css、Javascript、image也可以使用工具进行压缩,压缩后能节省空间。
4、合并CSS图片。
5、inline image:使用data: url("…") scheme的方式将图片嵌入到页面或CSS中。
6、懒加载图片(异步加载)。

2、将外部脚本置底(将脚本内容在页面信息内容加载后再加载)

前文有谈到,浏览器是可以并发请求的,这一特点使得其能够更快的加载资源,然而外链脚本在加载时却会阻塞其他资源,例如在脚本加载完成之前,它后面的图片、样式以及其他脚本都处于阻塞状态,直到脚本加载完成后才会开始加载。如果将脚本放在比较靠前的位置,则会影响整个页面的加载速度从而影响用户体验。解决这一问题的方法有很多,在 这里有比较详细的介绍 (这里是译文和 更详细的例子 ),而最简单可依赖的方法就是将脚本尽可能的往后挪,减少对并发下载的影响

3、异步执行inline脚本(其实原理和上面是一样,保证脚本在页面内容后面加载)

inline脚本对性能的影响与外部脚本相比,是有过之而无不及。首页,与外部脚本一样, inline脚本在执行的时候一样会阻塞并发请求,除此之外,由于浏览器在页面处理方面是单线程的,当 inline脚本在页面渲染之前执行时,页面的渲染工作则会被推迟。简而言之, inline脚本在执行的时候,页面处于空白状态。鉴于以上两点原因,建议将执行时间较长的 inline脚本异步执行,异步的方式有很多种,例如使用 script元素的defer 属性(存在兼容性问题和其他一些问题,例如不能使用 document.write)、使用setTimeout ,此外,在HTML5中引入了 Web Workers的机制,恰恰可以解决此类问题。

4、Lazy Load Javascript(只有在需要加载的时候加载,在一般情况下并不加载信息内容。)

随着 Javascript框架的流行,越来越多的站点也使用起了框架。不过,一个框架往往包括了很多的功能实现,这些功能并不是每一个页面都需要的,如果下载了不需要的脚本则算得上是一种资源浪费 -既浪费了带宽又浪费了执行花费的时间。目前的做法大概有两种,一种是为那些流量特别大的页面专门定制一个专用的 mini版框架,另一种则是 Lazy Load。YUI 则使用了第二种方式,在 YUI的实现中,最初只加载核心模块,其他模块可以等到需要使用的时候才加载。

5、将CSS放在head中

如果将 CSS放在其他地方比如 BODY中,则浏览器有可能还未下载和解析到 CSS就已经开始渲染页面了,这就导致页面由无 CSS状态跳转到 CSS状态,用户体验比较糟糕。除此之外,有些浏览器会在 CSS下载完成后才开始渲染页面,如果 CSS放在靠下的位置则会导致浏览器将渲染时间推迟。

6、异步请求callback(就是将一些行为样式提取出来,慢慢的加载信息的内容)

在某些页面中可能存在这样一种需求,需要使用 script标签来异步的请求数据。类似:
Javascript:
function myCallback(info){
//do something here
}
HTML:
cb返回的内容 :
myCallback(‘Hello world!’);
像以上这种方式直接在页面上写 《script》对页面的性能也是有影响的,即增加了页面首次加载的负担,推迟了 DOMLoaded和window.onload 事件的触发时机。如果时效性允许的话,可以考虑在 DOMLoaded事件触发的时候加载,或者使用 setTimeout方式来灵活的控制加载的时机。

7、减少不必要的HTTP跳转

对于以目录形式访问的 HTTP链接,很多人都会忽略链接最后是否带 ’/’,假如你的服务器对此是区别对待的话,那么你也需要注意,这其中很可能隐藏了 301跳转,增加了多余请求。具体参见下图,其中第一个链接是以无 ’/'结尾的方式访问的,于是服务器有了一次跳转。

8、避免重复的资源请求

这种情况主要是由于疏忽或页面由多个模块拼接而成,然后每个模块中请求了同样的资源时,会导致资源的重复请求

9、精简javascript和css

精简就是将Javascript或CSS中的空格和注释全去掉,
eg: body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}

二、代码优化
1、javascript

1、DOM
DOM操作应该是脚本中最耗性能的一类操作,例如增加、修改、删除 DOM元素或者对 DOM集合进行操作。如果脚本中包含了大量的 DOM操作则需要注意以下几点:
  a. HTML Collection(HTML收集器,返回的是一个数组内容信息)
  在脚本中 document.images、document.forms 、getElementsByTagName()返回的都是 HTMLCollection类型的集合,在平时使用的时候大多将它作为数组来使用,因为它有 length属性,也可以使用索引访问每一个元素。不过在访问性能上则比数组要差很多,原因是这个集合并不是一个静态的结果,它表示的仅仅是一个特定的查询,每次访问该集合时都会重新执行这个查询从而更新查询结果。所谓的 “访问集合” 包括读取集合的 length属性、访问集合中的元素。
  因此,当你需要遍历 HTML Collection的时候,尽量将它转为数组后再访问,以提高性能。即使不转换为数组,也请尽可能少的访问它,例如在遍历的时候可以将 length属性、成员保存到局部变量后再使用局部变量。
  b. Reflow & Repaint
  除了上面一点之外, DOM操作还需要考虑浏览器的 Reflow和Repaint ,因为这些都是需要消耗资源的,

2、慎用with

3、避免使用eval和Function

4、减少作用域链查找(这方面设计到一些内容的相关问题)

5、数据访问

6、字符串拼接

2、CSS选择符

3、HTML

4、Image压缩

三、CDN
四、Gzip
五、多域名
六、无Cookie服务器
转载自https://blog.csdn.net/lh9456/article/details/105773180


作者: 孙丽    时间: 2020-5-4 11:41
6666666666666666666666
作者: 王锦    时间: 2020-5-4 11:46
66666666666666666666666666666666
作者: 我是小圆圆    时间: 2020-5-4 11:46
感谢分享哦~
作者: zhaosongzhi    时间: 2020-5-4 11:48
作者棒棒哒
作者: zhaosongzhi    时间: 2020-5-4 11:57
作者棒棒哒
作者: zhaosongzhi    时间: 2020-5-4 12:06
作者棒棒哒
作者: 竹竹竹竹    时间: 2020-5-4 12:13
感谢分享
作者: zhaosongzhi    时间: 2020-5-4 12:14
作者棒棒哒
作者: 霍尔    时间: 2020-5-4 12:17
66666666666666666666
作者: zhaosongzhi    时间: 2020-5-4 12:23
作者棒棒哒
作者: zhaosongzhi    时间: 2020-5-4 12:31
作者棒棒哒
作者: zhaosongzhi    时间: 2020-5-4 12:40
作者棒棒哒
作者: zhaosongzhi    时间: 2020-5-4 12:49
作者棒棒哒
作者: zplxwl    时间: 2020-5-4 12:57
很不错哦!!!
作者: 零度☆黎明    时间: 2020-5-4 13:04
不错, 不错 .................. ..................
作者: 半个程序员    时间: 2020-5-4 13:42

感谢分享哦~
作者: 竹竹竹竹    时间: 2020-5-4 14:08
66666666666666
作者: 马洁    时间: 2020-5-4 14:20
干货满满
作者: hello!!!    时间: 2020-5-4 14:20

作者: sdjadyhm    时间: 2020-5-4 15:28

感谢分享哟~  棒棒哒加油~~
作者: 耙丫丫    时间: 2020-5-4 16:10
6666666666666666666666
作者: 哦嗨呦    时间: 2020-5-4 16:54
好人一生平安
作者: 黑马程序员啊    时间: 2020-5-4 18:34
6666666666666666666666
作者: manyihang    时间: 2020-5-4 19:59
666666666666666666666
作者: 逆风TO    时间: 2020-5-5 09:47

作者棒棒哒
作者: 逆风TO    时间: 2020-5-5 09:47

作者棒棒哒
作者: 逆风TO    时间: 2020-5-5 09:47
感谢分享呀~
作者: 逆风TO    时间: 2020-5-5 09:48
感谢分享呀~
作者: lvxinvip    时间: 2020-5-5 10:01

作者: hongping    时间: 2020-5-5 10:32

作者棒棒哒
作者: mydorling11    时间: 2020-5-5 11:11
不持续创新
作者: 1467584    时间: 2020-5-5 15:27

作者: 章鱼顶呱呱    时间: 2020-5-5 15:30
666666666666666666666
作者: yujq    时间: 2020-5-5 21:04
666666666666666666666666666
作者: daoqin    时间: 2020-5-6 09:25
感谢分享~加油哦~
作者: 咨询部王丹    时间: 2020-5-6 09:55
非常有用,感谢分享
作者: kdhdjdj    时间: 2020-5-6 14:30

作者棒棒哒
作者: kdhdjdj    时间: 2020-5-6 14:30

作者棒棒哒
作者: 影@子~    时间: 2020-5-7 13:55
感谢分享
作者: 大智叔叔    时间: 2020-5-7 15:38

很不错哦!!!
作者: 大智叔叔    时间: 2020-5-7 15:39

很不错哦!!!
作者: 你不爱我    时间: 2020-5-7 16:11
感谢分享~~                     
作者: 小公举    时间: 2020-5-7 17:26
太牛了,牛气冲天
作者: 我爱我1022    时间: 2020-5-7 17:46

作者: 王微    时间: 2020-5-7 17:52
感谢分享哦~
作者: 举个栗子    时间: 2020-5-8 08:39
66666666666666666666666666
作者: Emmmmm~    时间: 2020-5-8 09:47

666666666666666666
作者: jsnoob    时间: 2020-5-8 10:02
加油加油加油!!!
作者: lzq123    时间: 2020-5-8 10:04
66666666666666666666666666666666666
作者: 雨落轻舟    时间: 2020-5-8 11:51
666666666666666666666666666666666
作者: 素问    时间: 2020-5-8 13:19
感谢分享,加油~~~~!!!!
作者: 殷凯老师    时间: 2020-5-8 14:28
666666666666666666
作者: 逆风TO    时间: 2020-5-12 09:51
孙丽 发表于 2020-5-4 11:41
6666666666666666666666

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:51
孙丽 发表于 2020-5-4 11:41
6666666666666666666666

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:51
马洁 发表于 2020-5-4 14:20
干货满满

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:51
hello!!! 发表于 2020-5-4 14:20

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:52
zhaosongzhi 发表于 2020-5-4 12:31
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
竹竹竹竹 发表于 2020-5-4 12:13
感谢分享

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
zhaosongzhi 发表于 2020-5-4 12:31
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
zhaosongzhi 发表于 2020-5-4 11:48
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
零度☆黎明 发表于 2020-5-4 13:04
不错, 不错 .................. ..................

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
半个程序员 发表于 2020-5-4 13:42
感谢分享哦~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
zhaosongzhi 发表于 2020-5-4 12:40
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
zhaosongzhi 发表于 2020-5-4 12:31
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
zhaosongzhi 发表于 2020-5-4 12:49
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
霍尔 发表于 2020-5-4 12:17
66666666666666666666

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
zhaosongzhi 发表于 2020-5-4 12:49
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
zplxwl 发表于 2020-5-4 12:57
很不错哦!!!

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
zplxwl 发表于 2020-5-4 12:57
很不错哦!!!

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
逆风TO 发表于 2020-5-12 09:51
努力呀,加油呀~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:53
逆风TO 发表于 2020-5-12 09:51
努力呀,加油呀~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:54
zhaosongzhi 发表于 2020-5-4 12:49
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:54
零度☆黎明 发表于 2020-5-4 13:04
不错, 不错 .................. ..................

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:54
逆风TO 发表于 2020-5-12 09:51
努力呀,加油呀~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:54
zhaosongzhi 发表于 2020-5-4 11:57
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:54
逆风TO 发表于 2020-5-12 09:51
努力呀,加油呀~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:54
孙丽 发表于 2020-5-4 11:41
6666666666666666666666

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
竹竹竹竹 发表于 2020-5-4 14:08
66666666666666

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
竹竹竹竹 发表于 2020-5-4 14:08
66666666666666

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
zhaosongzhi 发表于 2020-5-4 12:49
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
竹竹竹竹 发表于 2020-5-4 14:08
66666666666666

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
马洁 发表于 2020-5-4 14:20
干货满满

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
zhaosongzhi 发表于 2020-5-4 11:57
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
竹竹竹竹 发表于 2020-5-4 12:13
感谢分享

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
王锦 发表于 2020-5-4 11:46
66666666666666666666666666666666

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
我是小圆圆 发表于 2020-5-4 11:46
感谢分享哦~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
逆风TO 发表于 2020-5-12 09:53
努力呀,加油呀~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
zhaosongzhi 发表于 2020-5-4 12:31
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:55
竹竹竹竹 发表于 2020-5-4 12:13
感谢分享

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
zhaosongzhi 发表于 2020-5-4 12:23
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
zhaosongzhi 发表于 2020-5-4 12:31
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
零度☆黎明 发表于 2020-5-4 13:04
不错, 不错 .................. ..................

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
逆风TO 发表于 2020-5-12 09:53
努力呀,加油呀~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
零度☆黎明 发表于 2020-5-4 13:04
不错, 不错 .................. ..................

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
zhaosongzhi 发表于 2020-5-4 12:49
作者棒棒哒

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
zplxwl 发表于 2020-5-4 12:57
很不错哦!!!

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
逆风TO 发表于 2020-5-12 09:53
努力呀,加油呀~

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
竹竹竹竹 发表于 2020-5-4 12:13
感谢分享

努力呀,加油呀~
作者: 逆风TO    时间: 2020-5-12 09:56
sdjadyhm 发表于 2020-5-4 15:28
感谢分享哟~  棒棒哒加油~~

努力呀,加油呀~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2