美文网首页
当你输入url到显示网页经历了哪些过程

当你输入url到显示网页经历了哪些过程

作者: 上帝大人 | 来源:发表于2019-09-29 16:01 被阅读0次
    • 输入网址url 。
    • 先进行缓存解析,当用户浏览器中有此网站的缓存时,就绪准备使用
    • DNS解析:域名解析,将你输入的网址解析为ip地址。
    • 建立tcp连接,因为tcp是面向连接的,所以要经历三次握手。
    • 发送Http请求,包括url,request_method等。
    • 服务器处理请求,包括调用静态文件,访问数据库等。然后将结果通过服务器返回给客户端
    • 客户端响应返回结果,即使是错误信息。

    详细点的:

    • DNS解析,把网址转化为IP地址。
    • 建立TCP连接,所以要经历三次握手

    第一次握手,客户端发送同步信号SYN=1,并发送初始序列号seq=x,服务器端收到来自客户端的同步序列号,确认建立连接。
    第二次握手,服务端发送同步信号SYN=1, 确认信号ACK=1,初始序列seq=y,确认信息ack=x+1。
    第三次握手,客户端收到服务器的信息,发送确认信号ACK,序列号seq=x+1,确认信息ack=y+1,建立TCP连接。

    • 发送Http请求,包括url,request,method等信息。

    发送请求后,web server会获取这个请求,然后通过请求转发给web application,web application接收请求,加载中间件,调用get_response()方法,这个方法就是找到对应的视图,执行视图中的方法,与此同时,调用回调方法,将响应头返回给web server,然后视图执行完将处理结果返回给web server。

    在执行视图时,如果时FBV,则直接执行,如果是CBV,在进行路由匹配的时候会执行CBV的as_view()方法,这实现了一个闭包,即as_view()方法了内部的一个函数,view()函数,在view函数中返回的时dispatch方法,dispatch方法通过对象关系映射的方式,根据你请求的方法执行不同的函数。

    这里还要说明的一点是,上面的视图是继承的View,若使用rest-framework,继承了APIView这个类在as_view处就重写了,View的请求之前,会执行csrf_token验证,而APIView中,as_vew()方法返回的内部函数iew,用装饰器csrf_exempt装饰,免除了验证,也会执行到dispatch方法,这个dispatch方法:
    1.封装了request,封装后的request中有原来的request,解析器对象,和认证类对象等。
    2.将CBV进行initial操作,获取到了版本,认证,权限,节流等信息,也就是关于rest-framework组件的操作。
    3.对象关系映射,执行对应的方法。

    • 服务器接受处理请求,将结果返回给客户端
    • 客户端将结果渲染,显示页面。

    相关文章

      网友评论

          本文标题:当你输入url到显示网页经历了哪些过程

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