网络协议
网络协议是很多性能优化的基础,了解了网络协议,很多优化也就是会呼之欲出
-
ip 协议 (寻址) 通过 ip 找到准确的地址 如 39.96.42.170 找到具体的地址
-
ip 协议之上,使用 tcp 协议来确保数据的完整有序
-
三次握手(每次请求都会有三次捂手)-- 所以要尽量少的请求来提高性能
-
滑动窗口
-
慢启动
-
挥手
-
。。。。
-
在 tcp 协议之上,我们使用 http 协议来作为网页传输的协议(应用层)
-
udp 协议也是基于 ip 的,不考虑数据的完整和有序。(那为啥还需要 udp 协议呢?)
-
性能更高(因为不像 tcp 一样要考虑一大堆的事情)
-
不在乎丢包 (音频 视频聊天 直播)
-
包比较小 不需要分包,只需要重发即可的情况下可以使用
-
直播之类就需要使用 udp 协议
-
DNS 是基于 UDP 协议的
http 是如何聊天的?
- 建立连接 – (主要是 TCP)
-
服务器 你在吗
-
我在
-
那我要给你发数据了
少加载文件
- 如何少加载文件(合理李颖浏览器缓存文件)
- 首次访问 http 请求 server 正常返回
-
返回响应头加上强缓存说明,如
expires:wed 11 aug 2019
或者cache-control:max-age=300000
(优先级更高) -
两个 header 都是都断告诉浏览器,这个文件,多少时间内是不过期的
-
浏览器接收到这两个 header 之后,就会将文件给缓存下来
- 在未过期的时间内再次请求这个文件
- 浏览器识别到 强缓存命中,请求不发出,直接用本地缓存的文件 状态码
200 from cache
- 过期后再次访问这个文件,浏览器强缓存失效,这时候就会采用协商缓存(因为毕竟这个文件浏览器存在过)
- 这时候浏览器不会直接发出请求,而是会问一下后端,在 header 上加上请求头,后端会告诉浏览器是否文件还存在,如果好存在,就可以继续直接使用缓存
-
如果后端返回原来那么文件内容已经被修改了,不存在了,那就只能重新加载了。
-
以上文件缓存都是浏览器本身自己的机制,js 都控制不到,但是我们可以通过工程化,来更搞笑的利用缓存
- 如何高效利用缓存
- 缓存时间过长
- 发布上线了,用户还用缓存,会有 BUG
- 缓存时间过短
- 重复加载的文件太多,浪费带宽
- 模板 (html) 静态资源(css js img video audio…)
-
模板或者 html 是不能有缓存的,这个是入口,一旦新代码发布上线,就没办法加载了
-
文件+哈希 - - 上线之后,要求用户用文件+哈希的方式来解决了(现在 webpack 工程化已经很成熟了)现在是先上线 js 再上线 html
现在 webpack 打包之后的文件都是这样文件名+哈希的形式
小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
最后
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
大厂面试问深度,小厂面试问广度,如果有同学想进大厂深造一定要有一个方向精通的惊艳到面试官,还要平时遇到问题后思考一下问题的本质,找方法解决是一个方面,看到问题本质是另一个方面。还有大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。
大家一定要有目标,我在很久之前就想着以后一定要去大厂,然后默默努力,每天看一些大佬们的文章,总是觉得只有再学深入一点才有机会,所以才有恒心一直学下去。