url输入之后发生了什么以及优化点

\color{red}{问题:}

  • 已经建立连接了,但是服务器崩溃了,怎么办?
  • HSTS
  • 缓存校验
  • DNS解析(20ms到120ms)

\color{red}{url输入之后流程:}

1.png

一,url解析以及缓存

二,DNS解析

2.png

1,首先本地解析,没有的话再去别的地方找(递归过程--深度搜索)


3.png

2,去DNS服务器上找(迭代过程--广度搜索),2,3,4,5,6,7步骤,最后到权威域名服务器找,20-120ms
优化点:
1,减少DNS请求次数,尽量不用请求太多不同服务器资源。但是为了做负载均衡,服务器分离部署,需要尽量多的请求不同服务器资源,所以这个很难做到。
2,DNS预解析,这个是异步处理,节省时间,针对的是页面的图片等资源
<link rel="dns-prefetch" href="//g.alicdn.com">

三,减少HTTP请求和请求资源大小

优化点:
1,资源合并压缩
2,字体图标
3,base64(小图片)
4,GZIP
5,图片懒加载(骨架屏技术)
6,数据延迟分批加载(第一次只加载首页)
7,CDN资源(地域式分布,请求离自己最近的服务器)
8,雪碧图(基本淘汰)

四,发送http请求之后应用缓存(把内容缓存起来,他不香吗)

4.png

缓存位置:

1,Service Worker:浏览器独立线程进行缓存(基本不用)
2,Memory Cache:内存缓存(小而快,浏览器操作)
3,Disk Cache:硬盘缓存(大而慢,浏览器操作)
4,Push Cache:推送缓存(HTTP2中,基本不用)

缓存流程:

  • 初次加载url:查找disk cache,有的话直接拿,没有的话从服务器请求,服务器返回缓存规则
  • 刷新页面(f5):memory cache,然后再disk cache
  • 强制刷新(ctrl+f5):浏览器不使用缓存,发送的头部带有cache-control:no-cache(为了兼容,也会有pragma:no-cache),服务器直接返回200和最新内容

4.1,强缓存(Expires/Cache-Control)

浏览器对于强缓存的处理:根据第一次请求资源时服务器返回的相应头来确定


5.png

缓存规则:

  • Expries:缓存过期时间,用来指定资源到期时间(http1,过时了,现在用http1.1)
  • Cache-Control: Cache-Control:max-age=2592000,也就是30天,再次发请求,读取缓存中的信息(http1.1),具体是在memory cache中还是disk cache中读取,由浏览器规定
    规则(两者同时写时,Cache-Control优先级更高):


    6.png

    问题:服务器在30天内更新资源,客户端无法同步更新。
    解决:webpack打包之后,文件名会添加hash值,当成新的资源请求服务器(也就是没有缓存)

4.2,协商缓存

强缓存失效(过期)后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程。
资源未更新,返回304过程:


7.png

资源更新,返回200的过程:


8.png

Last-Modified和If-Modified-Since:

  • 初次访问,服务器返回资源,响应头中设置了Last-Modified(上次修改时间),缓存文件和响应头
  • 再次访问,浏览器检测到有Last-Modified,于是设置If-Modified-Since=Last-Modified,并将If-Modified-Since添加到请求头。
  • 服务器收到请求,将If-Modified-Since与服务器的Last-Modified相同,则返回304和空的响应体,浏览器直接从缓存中读取;如果If-Modified-Since小于服务器的Last-Modified,则说明服务器资源有更新,则返回新的资源文件和200.
    注意:Last-Modified是秒级,如果在不可感知的时间内修改文件,则服务器会以为没有修改

ETag和If-None-Match:

服务器资源改变时,ETag就会改变,用法和上面一样

七,浏览器渲染

构建DOM树,CSS树,Render树

7.1,DOM树

初始字节码-通过utf-8转换:Bytes:3c 62 6f ......


9.png

(1)转换 字符集

Characters:<html><head></head><body><p></p></body></html>


10.png

(2)令牌

Tokens: StartTag:html StartTag:head EndTag:head StartTag:body EndTag:body ...


11.png

(3)词法分析

Nodes:html body p span ...


12.png

(4)DOM构建

13.png

优化点:
1,标签语义化
2,避免多级嵌套(尽量4级以下)

7.2,CSSDOM树,link,@import

流程和DOM一样


14.png

优化点:
(1)css选择器是从右到左,比如 .div a 是先找所有的a,然后再找.div,因此选择器层级不要太多

7.3,RENDER树

15.png

计算在视口的位置和大小,也就是回流(因元素位置,大小变化导致的重新布局)
根据渲染树和回流得到的几何信息,进行绘制(宽高,大小,颜色)
重绘不一定会流,但是会流一定重绘

优化点:
1,减少操作dom(react之类框架很少需要):
(1)动画效果放在absolute上面
(2)css3硬件加速(GPU加速),但是可能消耗过多性能,占用内存,导致字体模糊等
(3)牺牲平滑度换取速度,也就是动画时不以1px为基准,而以3px以上,看上去略有不流畅,但可以减少因cpu打满而产生的卡顿
(4)读写分离
2,link是发送http请求,每个http请求都是单独线程处理,chorme可以允许6-7个http请求
(1)@import是同步的,会导致阻塞,因此要减少使用
(2)问:react项目中使用@import,打包之后是什么情况?
优化点:
1,style不需要发请求,速度比link快,如果内容不多的话
2,减少@import
3,link写在头部,和html并发请求

7.4,JS加载

优化点
1,js也是阻塞的,需要放到底部


16.png

蓝色加载,红色渲染
async是谁先加载完成,谁先渲染,不分先后顺序,不依赖其他js文件,不产生冲突的common.js可以使用。(淘宝基本都用的async,和我想的有点不一样...)
defer会有设置依赖,有顺序,一般使用defer。(webpack打包也可以加上)

参考资源:去b站看了下,视频凉了

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