浏览器访问一个网站所经历的步骤

时间: 2018-07-19阅读: 1819标签: 浏览器

1、Chrome搜索自身的DNS缓存


2、搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)
查看Chrome浏览器的DNS缓存信息(chrome://net-internals/#dns):

3、读取本地HOST文件


4、浏览器发起一个DNS的一个系统调用

    运营商服务器把结果返回操作系统内核同时缓存起来

    操作系统内核把结果返回浏览器

    最终浏览器拿到www.jianshu.com对应的IP地址


5、浏览器获得域名对应的IP地址后,发起HTTP“三次握手”


6、TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求了。(使用了比如说,用HTTP的GET方法请求一个跟域名,协议可以采用HTTP1.0。)


7、服务器端接受到了这个请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果的数据返回给浏览器。如果是慕课网的页面就会把完整的html页面代码返回给浏览器。


8、浏览器拿到了简书网的完整的html页面代码,在解析和渲染这个页面的时候,里面的jscss、图片静态资源,他们同样也是一个个HTTP请求都需要经过上面的主要的七个步骤。


9、浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给了用户。


一些概念

1. 什么是回调?

回调是异步编程时的基础,将后续逻辑封装成起始函数的参数,逐层嵌套


2. 什么是同步/异步?

同步是指:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
异步是指:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。


3. 什么是I/O?

磁盘的写入(in)磁盘的读取(out)


4. 什么的单线程/多线程?

一次只能执行一个程序叫做单线程
一次能执行多个程序叫多线程


5. 什么是阻塞/非阻塞?

阻塞:前一个程序未执行完就得一直等待
非阻塞:前一个程序未执行完时可以挂起,继续执行其他程序,等到使用时再执行


6. 什么是事件?

一个触发动作(例如点击按钮)


7. 什么是事件驱动?

一个触发动作引起的操作(例如点击按钮后弹出一个对话框)


8. 什么是基于事件驱动的回调?

为了某个事件注册了回调函数,但是这个回调函数不是马上执行,只有当事件发生的时候,才会调用回调函数,这种函数执行的方式叫做事件驱动~这种注册回调就是基于事件驱动的回调,如果这些回调和异步I/O(数据写入、读取)操作有关,可以看作是基于回调的异步I/O,只不过这种回调在nodejs中是有事件来驱动的


9. 什么是事件循环?

事件循环Eventloop,倘若有大量的异步操作,一些I/O的耗时操作,甚至是一些定时器控制的延时操作,它们完成的时候都要调用相应的回调函数,从而来完成一些密集的任务,而又不会阻塞整个程序执行的流程,此时需要一种机制来管理,这种机制叫做事件循环.
总而言之就是:管理大量异步操作的机制叫做事件循环

Event Loop:
回调函数队列。异步执行的函数会被压入这个队列; 队列被循环查询。


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/942

防止用户在浏览器下调试查看js代码

浏览器可以通过F12或者鼠标右键的形式打开html页面,然后就可以看到页面的的信息,如dom结构,加载文件、请求信息等。那有没有办法禁止掉这一行为呢?

浏览器多标签页通信

浏览器多标签页通信有助于降低服务器负载,提高运营人员的工作效率,提高用户体验。是前端开发优化的一个重要环节。分别是使用cookie、使用websocket协议、通过localstorage、以及使用html5浏览器的新特性SharedWorker,每种方法各有利弊。如果不考虑兼容旧的浏览器,superSharedWorker 或许是最好的解决方案

浏览器重绘(repaint)重排(reflow)与优化

很多人都知道要减少浏览器的重排和重绘,但对其中的具体原理以及如何具体操作并不是很了解,当突然提起这个话题的时候,还是会一脸懵逼。希望大家可以耐着性子阅读本文,仔细琢磨,彻底掌握这个知识点!

Chrome浏览器所有页面崩溃

Chrome浏览器所有页面崩溃,包括设置页面,喔唷,崩溃啦!显示错误码:STATUS_INVALID_IMAGE_HASH,Chrome所有插件报错,右下角一串弹框

精打细算浏览器空闲时间

有时候我们希望在浏览器中执行一些低优先级的任务,比如记录统计数据、做一些耗时的数据处理等,暂且将其称为后台任务。这些任务跟动画计算、合成帧、响应用户输入等高优先级的任务共享主线程

Vue单页面应用阻止浏览器记住密码

现象1:路由切换时再次提示是否记住密码,解决办法:这其实是个代码bug,在登录页面,用form把输入框都包起来就行了。现象2:autocomplete=off无效

浏览器的三种Js弹窗方式

在做网页时,常常使用弹窗,以上就是浏览器的三种弹窗方式, alert 在测试时常用; confirm 可以套用if...else 来用 ,比如 :confirm点击了确定做什么事情,点击了取消又做什么事情;prompt 弹窗输入 ; 可以给网页设置密码。

原生js实现基于base64数据复制图片到剪切板,可以粘贴出图片,模拟浏览器复制功能。

之前我们这边有个需求就是说,前端通过canvas截图然后, 点击一个按钮实现复制截取的图片到剪切板上,然后我查了好多文档,还去了github上看了一圈也没看见比较好的解决方案。

Js详细判断浏览器运行环境

看到标题,大家就能想起这个需求在很多项目上都能用到。我们部署在Web服务器上的前端应用,既可以用PC浏览器访问,也可以用手机浏览器访问,再加上现在智能设备的推广,我们甚至能在车载系统、穿戴设备和电视平台上访问

Puppeteer浏览器控制器_介绍Puppeteer的一些用法

Puppeteer是Chrome团队开源的Node库,其提供基于DevTools协议的高阶API让开发人员能够控制Headless Chrome、Chromium、Chrome等浏览器,通过Puppeteer能够将平时手动使用浏览器的操作通过代码的方式自动化执行

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!