2019-03-20

作者: 蓝子_23d0 | 来源:发表于2019-03-20 21:58 被阅读4次

    用户打开浏览器,输入baidu.com,页面展示百度首页。整个过程发生了什么?

    第一步:用户输入baidu.com

    URL是什么?

    URL(统一资源定位符),用于定位互联网上的资源,它包括http,https,ftp,file协议。

    第二步:域名解析

    域名解析的流程:

    1.查找浏览器缓存 —— 浏览器会缓存DNS记录一段时间。

    浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。

    2.查找系统缓存 —— 从Hosts文件查找是否有该域名和对应IP。

    如果用户的浏览器缓存中没有,浏览器会从hosts文件查找是否有存储DNS信息,查找是否有目标域名和对应的IP地址

    3.查找路由器缓存 —— 一般路由器也会缓存域名信息。

    如果系统缓存中也找不到,那么查询请求就会发向路由器,路由器一般会有自己的DNS缓存。

    4.ISP DNS缓存 —— 比如到电信的DNS上查找缓存。

    如果路由器缓存中也找不到,那么就查询ISP DNS 缓存服务器了。

    5.如果都没有找到,则向根域名服务器查找域名对应IP,根域名服务器把请求转发到下一级,直到找到IP。

    第三步:服务器处理

    服务器是一台安装系统的机器,常见的系统如Linux,Windows server 2012.

    系统里安装的处理请求的应用叫Web server。

    当web server接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。对于不同用户发送的请求,会结合配置文件,把不同请求委托给服务器上处理对应请求的程序进行处理(例如CGI脚本,JSP脚本,servlets,ASP脚本,服务器端JavaScript,或者一些其它的服务器端技术等)。

    无论它们(脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。

    第四步:网站处理流程

    那么如何处理请求?实际上就是后台处理的工作。后台开发现在有很多框架,但大部分都还是按照MVC设计模式进行搭建的。

    image

    MVC的处理过程是这样的:对于每一个用户输入的请求,首先被控制器接收,控制器决定用哪个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器确定用哪个视图模型,用相应的视图格式化模型返回html字符串给浏览器,并通过显示页面呈现给用户。

    第五步:浏览器处理:

    1.HTML字符串被浏览器接手后被一句句读取解析

    2.解析到link标签后重新发送请求获取CSS

    3.解析到script标签后发送请求获取js,并执行代码。

    4.解析到img标签后发送请求获取图片资源。

    第六步:绘制网页

    浏览器根据HTML和CCS计算的得到渲染书,绘制到屏幕上,js会被执行。


    参考文章:

    前端面试题:从url到页面展现,这之中发生了什么

    相关文章

      网友评论

        本文标题:2019-03-20

        本文链接:https://www.haomeiwen.com/subject/xsexvqtx.html