美文网首页
前端HTTP相关面试总结

前端HTTP相关面试总结

作者: 不敢大声说话的web小萌新 | 来源:发表于2021-08-20 16:41 被阅读0次

    数据库缓存

    将查询的表放入内存中存储,需要再次查找的时候直接从内存中获取(redis)
    

    CDN缓存

    通过CDN访问内容最近最快的路劲,网站管理员部署,将常用的内容放入CDN节点
    

    代理服务缓存

    第三方边缘服务器优化缓存
    

    浏览器缓存

    1. 强缓存

      关键词

      • expires

        • HTTP 1.0 字段
        • 到其时间,根据判断是否到期作为强缓存时间依据
        • 因为获取的是本地时间,所以修改本地时间可改变缓存时间
      • cache-control

        • disk cache 本地缓存
          • 图片,等大文件一般缓存到本地硬盘中
        • memory cache 内存缓存
          • 数据类存入到计算机内存
        • 两种缓存方式有浏览器自动调配
      • pragma

    2. 协商缓存

    为什么有HTTPS 协议

    1. HTTPS 是基于HTTP 2.0协议上增加了一个TLS 加密协议
    2. HTTP 传输协议是明文传输的,为了防止再传输过程中,被中间劫持谷歌增加了非对称加密
    3. HTTPS 会增加了握手的时长
    4. HTTPS 交互过程 ... 后期补全

    HTTP code 码标识

    1. 1xx 表示协议处理中间状态,还需要后期处理
    2. 2xx 表示成功状态
    3. 3xx 表示重定向,资源位置发生改变需要重新请求
    4. 4xx 表示请求报文有误
    5. 5xx 表示服务端发生错误

    TCP 三次握手

    1. 第一次握手,客户端向服务端发送SYN包(seq=j),此时客户端进入SYN-SENT
    2. 第二次握手,服务端收到客户端的SYN包并对SYN包加1(seq=j+1),并发送SYN+ACK(seq=k),服务端进入SYN-RECV状态
    3. 第三次握手,客户端收到服务端的SYN+ACK包,发送ACK(seq=k+1),发送完成后并与服务器建立连接。

    注释:[^SYN 同步字符] [^ACK 确认字符]

    百度百科:
    
    第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
    
    第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个ACK包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
    
    第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。 
    
    

    TCP 四次挥手

    1. 第一次挥手,客户端向服务器发送fin标志位报文,并告诉服务端要断开连接,客户端状态由established变为fin-wait-1
    2. 第二次挥手,服务到收到客户端fin报文,并发送ACK报文,告诉客户端要关闭的连接,服务端从established变成close_wait,,客户端收到ACK报文,状态变为fin-wait-2
    3. 第三次挥手,服务端应用可以关闭连接,并向客户端发送fin 报文,服务端用close-wait编程last-wait
    4. 客户端收到find报文,回复ACK报文,客户端状态从fin-wait-2变为time-wait,服务端收到ACK报文后直接关闭,将状态变为close
    百度百科
    
    由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。
    
    第一次挥手:TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送。
    第二次挥手:服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
    第三次挥手:服务器关闭客户端的连接,发送一个FIN给客户端。
    第四次挥手:客户端发回ACK报文确认,并将确认序号设置为收到序号加1。
    
    function showNavigationDetails() {
      const [entry] = performance.getEntriesByType("navigation");
      console.table(entry.toJSON());
    }
    showNavigationDetails(); //查看各个地方的相应事件
    
    //关于我们的Web性能,我们会用到的时间参数:
    //DNS解析时间: domainLookupEnd - domainLookupStart
    //TCP建立连接时间: connectEnd - connectStart
    //白屏时间: responseStart - navigationStart
    //dom渲染完成时间: domContentLoadedEventEnd - navigationStart
    //页面onload时间: loadEventEnd - navigationStart
    
    

    HTTP 1.1 与 HTTP 2.0 有什么提升

    1. 头部压缩
    2. 多路复用
    3. 持久化链接
    4. 增加cache-control

    相关文章

      网友评论

          本文标题:前端HTTP相关面试总结

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