web性能优化

DNS
TCP 三次握手 四次握手
keep alive
http/https
浏览器渲染原理
CDN
懒加载
预加载
按需加载

面试题1:
web性能优化有哪些常见手段

  1. cdn加速 开启gzip
    面试题2:
    如何解决单页应用首屏加载慢的问题?
    面试题3:
    为什么要把<script></script>标签放在body最后。
    面试题4
    script标签中的 asycn 和 defer 有什么区别?
    面试题5
    http1.1 和 http1.2 有什么区别
    面试题6
    http缓存怎么做?

3次握手详解
SYN是synchronize(同步)的缩写。这里指的是同步信息的意思
ACK是 acknowledge (知道,获悉)的意思。这里指的是获悉,响应的意思

  1. 浏览器发送一个同步信息的syn(x)请求
  2. 服务器回复一个响应ack(x+1),同时也发送一个同步信息syn(y)的请求
  3. 浏览器收到后也响应这个请求发送ack(y+1)
  4. 连接建立成功。然后浏览器开始传输数据。
    4次挥手详解:
    FIN 是finish(完成,结束)的意思
  5. 浏览器发送FIN(x)给服务器
  6. 服务器响应ACK(x+1);然后服务器检查下是否接收完数据。
  7. 服务器发送FIN(y),表示接收完数据可以结束了
    4.浏览器发送ACK(y+1).表示收到了这句话。
    等待一段时间后,确认没有错误,断开连接

一次http请求与响应
1.请求报文
http动词 URL HTTP/1.1 // 动词 GET POST HEAD PUT DELETE OPTIONS PATCH TRACE CONNECT
Accept:text/html // 期待返回html
Host:baidu.com // 域名
Connection:keep-alive
Content-Type:application/json // 请求的消息体格式为json
...其他请求头字段
/r/n 回车换行
{“name”:"xxd"}

  1. 响应报文
    HTTP/1.1 200 成功
    Connection:keep-alive
    Content-Type:text/html
    Content-Length:224
    Content-Encoding:gzip
    Set-Cookie:session_id=xxx;exprice=Wed, 21 Oct 2015 07:28:00 GMT
    Date:系统时间
    ...
    /r/n
    {"name":"yyd"}

一、

  1. 下载和执行js为什么会阻塞html解析。
    因为 html的解析是一行行顺序向下进行的,一旦遇到script标签,就会去下载js,下载js的构成中会去执行js.
    而执行js的操作可能会修改dom树元素。如果不等待js执行完毕,直接构建并渲染dom树,则构建并渲染的DOM树是错误的。
  2. 在script标签上加async,会使得js的下载执行变成异步的,和html的解析完全不相干。
  3. 在script标签上加defer,会使得js的下载执行变成异步的.但是js文件的执行是在html解析之后,DOMContentLoaded 事件触发之前完成。
    所以推荐
    1.对于操作或者以来DOM树的js脚本在script标签上加defer:<script defer src='js1.js'></script>
    2.对于和DOM树完全不相关js脚本在script标签上加async:<script defer src='js1.js'></script>。async有一个问题就是如果js下载过快,js执行会堵塞html解析。
    实际工作中一般推荐使用defer.
    二、下载和解析css为什么会阻塞js执行?
    js执行可能需要获取div的样式,所以必须等css解析完成。

三、浏览器渲染html过程


image.png

reflow 重新布局 repaint 重新绘制
在 html解析完,css解析完 js执行完,就进入HTML渲染环节
此时浏览器把css树和dom树合并成一颗渲染树。然后进行布局layout 绘制paint 合成composite
由此我们知道改变div的宽高会引起重新布局reflow和repaint重绘。
改变div的颜色和阴影,也会引起重绘。
所以为了避免这些性能耗费,尽量要减少这些js操作。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容

  • 我们都知道对于Web应用来说性能很重要。然而性能优化相关的知识却非常的庞大并且杂乱。对于性能优化需要做些什么以及性...
    PHP9年架构师阅读 298评论 0 6
  • 书本开片就阐述了一个很重要的定理:速度是关键在互联网飞速发展的时代,人们有非常多的选择,大家变的没不那么有耐心了,...
    Wong巴卫阅读 302评论 0 2
  • 书本开片就阐述了一个很重要的定理:速度是关键 在互联网飞速发展的时代,人们有非常多的选择,大家变的没不那么有耐心了...
    半吊子程序员阅读 1,348评论 0 5
  • 一个网站在浏览器端是如何进行渲染的? 主要步骤就是图片上这些步骤.我们知道在html页面中把css 文件放到用li...
    Ethan__Hunt阅读 1,493评论 0 0
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 124,937评论 2 7