输入网址,按下回车键,如果浏览器里面有缓存,就走缓存,如果没有缓存,直接通过域名是没办法访问到服务器的。因为服务器需要ip来访问,就要把域名转成ip。如果之前在浏览器中缓存过ip,域名会直接去查ip,域名直接转成ip。
如果本机上没有缓存过ip,就要去查DNS域名解析服务器。把域名传过去,需要返回一个ip,所以说,访问服务器,第一步要有ip。比如百度www.baidu.com对应的ip是14.215.177.39。
域名第一次访问服务器会比较慢,后面访问过,存到本机之后,访问就会比较快。
域名和服务器之间通过http的请求和响应。http的请求是在TCP链接的基础上的。
比如,输入网址www.xaiomi.com,按下回车,就是后台向前台发送数据的过程。按下F12,点network,
在preview里面,可以看到返回的html代码,获取到代码,然后开始往下读,遇到有css代码,就去向css文件中请求,遇到js代码就向js文件中请求。
HTML 的标签
浏览器在解析 HTML 标签的时候,遇到一些特殊的标签,会再次向服务器发送请求
link/img/script/iframe
chrome 允许同一个域名下, 可以最多同时请求 6 个资源
还有一些标签,浏览器解析的时候,不会向服务器发送请求,但是用户可以使用他们向服务器发送请求,a/form
浏览器如何解析js?
浏览器运行整个页面文档时(html文件),遇到
JavaScript解析器工作步骤:
(1)预解析阶段
这个阶段,JS解析器从上到下搜索代码,只去寻找一些关键字如var,function这些内容,找到这些内容后,相关的所有的变量都会被先赋值为undefined(这也就是变量提升为啥值会是undefined的具体原因),所有的函数变量都为函数块。
如果这个阶段遇到变量重名的问题,有以下规则:
变量和函数声明重名了,只留下函数;
函数和函数重名了,根据代码的上下文顺序,留下最后一个。
(2)逐行解读代码。
这个阶段的变量赋值表达式可以修改上一步预解析的值。
如果有多个表达式对相同的变量多次赋值,那么除过函数声明不能修改上次的赋值,变量赋值和函数表达式都可以修改这个变量的值。