从输入URL地址到看到页面,中间都经历了什么.

image.png

1.第一步url解析

  • 地址解析(http默认端口号:80,https默认端口号:443,FTP默认端口号:21,一个服务器可以存放多个项目,服务器根据端口号查找对应的项目服务.返回给客户端)


    image.png
  • url编码(防止中文、或者地址出现乱码,可以进行字符编码,服务器解码).
//对整个URL编码:处理空格,中文字符可以,参数为url无效
encodeURL/decodeURL
//对传递的参数信息来编码,空格特殊字符都可以转码
encodeURLComponent/decodeURLComponent
  • URI/URL/URN的区别

2.第二步浏览器查找当前url是否存在缓存,并比较缓存是否过期。缓存检查

1.两种情况
1-1.没有设置缓存,本地也没有缓存,需要向服务器进行请求.
1-2.本地设置缓存,去查看缓存是否过期,没有过期,向本地缓存读取.

*缓存有两种:强缓存、协商缓存.
先检查是否存在强缓存

  • 有,且未失效,走强缓存.

  • 如果没有,或者失效,检查是否存在协商缓存.

  • 如果协商缓存有,直接拿协商缓存的数据

  • 如果协商缓存没有,直接正常请求向服务器请求最新数据.

  • 缓存位置(缓存是后台配置,浏览器帮助实现,前端不需要写代码)
    1.Memary Cache :内存缓存.相当于内存条(缓存的存放位置)特点:浏览器关闭缓存清除.
    2.Disk Cache:硬盘缓存.特点浏览器关闭,再打开依然可以读取到缓存.

打开网页:查找硬盘缓存是否有匹配,如果有则使用,没有则发送网络请求,
普通刷新:因tab没有关闭,此时内存缓存是可用的,会被优先使用。如果没有才是硬盘缓存.
强制刷新:浏览器不使用缓存哪怕本地有缓存也不管,因此发送的请求头部均带有Cache-control:no-cache,服务器直接返回200和最新内容.

页面第一次打开->内存缓存(Memary-Cache)->页面关闭->强制给硬盘缓存存放一份->页面再次打开->会从硬盘缓存(Disk-Cache)直接读取内容返回无需请求.

1.强缓存(html页面一般不做强缓存,返回的状态码:200(from memory cache))

  • http1.0用expires用来设定缓存过期时间,用来指定资源到期时间.
  • http1.1用的是Cache-Control(max-age=2592000,第一次拿到资源后的30天内,再次发送请求,读取缓存中的信息.)
  • 两者同时存在的话 Cache-Control优先级大于expries

强缓存原理:

  • 强缓存的问题
    如果服务器文件更新了,但是本地还是有强缓存,拿不到最新的信息.
    解决方案:
    1.html页面一般不做强缓存.
    2.webpack的hash值.服务器更新资源后让资源名称和之前不一样.这样页面导入全新资源.
    旧:index.xxxxx.js(缓存)
    新:index.cdcdc.js (未缓存从服务器读取最新的.)
    3.当文件更新后,在html导入的时候,设置一个后缀名,后缀可以设置一个时间戳.
    <script :src="xxxx.js?时间戳">
    4.协商缓存也可以解决.

2.协商缓存(强缓存没有,或者失效后,不管你有没有缓存,浏览器都会携带缓存标识,向服务器端发送请求)。

  • http1.0 Last-Modified(记录当前资源最后更新时间)
  • http1.1 ETag(记录标识)
  • Last-Nodified/ETag协商缓存就是在强缓存失效后,浏览器携带缓存标识,由服务器根据缓存标识决定使用缓存的过程.
    没更新返回:304,通知客户端读取缓存信息,
    更新过返回:200和最新资源,已经Last-Modified/ETag

强缓存与协商缓存区别
协商缓存总是发起请求与服务器沟通.不管有没有缓存.
强缓存性能比协商缓存性能好很多.
两种只针对于静态资源文件,而且不是经常更新的.

3.数据缓存,需要localStorage、vuex或者redux

3.DNS解析URL对应的IP(将服务器地址,转换成外网地址)域名解析 域名 外网IP

通过域名->找到外网IP->找到服务器地址.

DNS也是有缓存的,如果之前解析过会在本地有缓存(不一定,也是有周期的).

  • 递归查找(本地查询)
  • 迭代查找 (依次遍历每台服务器)

DNS优化:
1.减少DNS请求(一个页面少用不同的域名,资源尽量都放在相同的服务器上,项目中不会这么干,项目中会将不同的资源分布在不同的服务器上)控制台查看Source查看不同的域名.不同的资源服务器,要求不一样,一般公司用的是服务器分布式.同一个源http可以同时发送4-7个请求,可以提高并发性.
2.DNA预获取

//还没有加载DOM提前发送请求
<link rel="dns-prefetch herf="xxxx">

4.根据IP建立TCP连接(三次握手)

1.建立连接通道

5.HTTP发起请求(传输数据)

6.服务器处理请求,浏览器接收HTTP响应

7.渲染页面,构建DOM树.

8.关闭TCP连接(四次挥手)

9.产品性能优化方案

  • http网络层优化
  • 代码编译层优化webpack
  • 代码运行层优化 html/css+javascript+vue/react(虚拟DOM)
  • 安全优化xss+csrf
  • 数据埋点及性能监控

10.CRP(关键渲染路径)

11.TCP/IP

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

推荐阅读更多精彩内容