栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

从输入URL到页面展示发生了什么(详细版)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从输入URL到页面展示发生了什么(详细版)

前言

刚毕业那会出去面试前端的工作,有一场面试,面试官上来就问了一个问题,浏览器地址栏中输入了URL到页面展示,中间发生了什么。当时我是一脸懵逼,因为我不是计算机专业的,一些基础知识比较欠缺,只是自己学了编程语言的语法,所以结果也可想而知。后来随着平时的学习,知识的累加发现这个问题确实很能考查面试者的基础知识,从网络协议到浏览器等一系列知识,不愧是面试常考题,所以今天就打算把之前学的知识整理一下,串起来。一方面是自己学习的一个记录,另一方面也希望可以帮助到阅读的人,如果有什么不对的地方,欢迎指正。

1、用户输入URL

我们常用的谷歌浏览器打开一个网页一般会启动浏览器进程,网络进程,渲染进程,GPU进程,如果用到插件的话还会用到插件进程。当用户在地址栏中输入了URL,浏览器进程会通过进程间的通信把URL请求发送给网络进程。(当在地址栏中输入了关键字后,地址栏会对你输入的关键字进行判断,如果是搜索内容地址栏会用浏览器默认的搜索引擎,合成带有搜索关键字的URL,如果输入的关键字被判断是URL则会进行接下来的请求)

2、发起请求

在网络进程拿到URL之后,发起请求之前,会在本地查找是否有缓存,缓存分为强缓存和协商缓存,如果命中缓存的话,则会直接把缓存的资源返回给浏览器进程,如果没有缓存的话就会进入网络请求环节。这边简单讲一下在本地查找缓存的过程,当浏览器第一次加载资源,服务器返回200后,浏览器会将资源文件从服务器上缓存下来,并把响应头及该请求的返回时间一并缓存。在响应头中有Cache-Control:max-age=600,这里定义了缓存的时间单位是秒,600的话就是如果你在上次请求完的10分钟内在发起请求则会命中强缓存,如果没有命中强缓存,则会发起请求判断,当浏览器第一次加载资源时,服务器返回的响应头中还会有Etag属性,当你请求的资源发生改变时Etag的值也会发生改变,在请求头中会带上Etag,如果Etag的值和服务器中请求资源的Etag值相同,则说明资源没有变化,则命中协商缓存,返回304,从缓存中拿取请求的数据。

3、请求过程

请求的资源没有命中缓存,那就开始进行网络请求,在进行网络请求前还要进行DNS域名解析,因为单靠URL,浏览器无法知道向哪个服务器发起请求,URL经过DNS域名解析会得到IP和端口,然后通过IP地址和服务器建立TCP连接,建立TCP连接需要浏览器和服务器进行三次握手。
。。。。。。未完待续

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/315606.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号