阅读 647

浏览器知识点3:http请求流程

http:允许浏览器想服务器获取资源的协议

浏览器发起http请求流程

1. 构建请求

构建请求行信息GET /index.html HTTP1.1,然后准备发起请求

2. 找缓存(真正发起请求前

       浏览器缓存:本地保存资源副本,以供下次请求直接使用,若已有副本->拦截请求->返回副本->结束请求

  • 缓解服务器压力,提升性能
  • 对网站来说,缓存能实现快速加载资源

**3.**准备IP地址和端口

DNS(Domain Name System 域名系统):IP地址和域名映射

  • 浏览器请求DNS返回对应IP(DNS 数据缓存可以减少一次网络请求)
  • 端口号:URL没有特别指明,默认80端口

4. 等****待 TCP 队列

  • http1.1 同一个域名最多只能建立6个TCP连接,一个TCP同时只能处理一个请求,如果统一域名下有10个请求发生,其中4个会进入排队等待状态
  • http2 可以并行请求资源,每个域名维护1个TCP连接

5. 建立****TCP 连接

6. 发送****HTTP 请求:向服务器发送请求行

服务器端处理HTTP请求流程

1. 返回请求

2. 断开连接

 Connection:Keep-Alive  能让TCP请求在发送后仍保持打开状态,浏览器可以继续通过同一个TCP连接发送请求:可以省去下次请求时需要建立连接的时间,提升资源加载速度

3. 重定向

总结

  • 为什么一些网站第二次打开会快

  •  DNS缓存

  • 页面资源缓存

  • 服务器返回 http 响应头,浏览器通过 Cache-Control:Max-age=2000 设置是否缓存资源以及缓存过期时间

  • 如果缓存过期,浏览器继续发起请求,并在 http 请求头带上 If-None-Match:"4f80f-13c-3a1xb12a" 服务器根据 If-None-Match 判断请求资源是否有更新

  • 优先级:Cache-Control > Expires  Etag > Last-Modified

  •   Cache-Control:
      max-age:缓存时间(s)
      s-maxage:针对代理服务器缓存时间
      public:可被任何缓存区缓存
      private:只能针对个人用户,不能被代理服务器缓存
      no-cache:会被缓存,但每次请求,缓存都要向服务器评估缓存响应有效性
      no-store:禁止一些缓存
    复制代码
  • 登陆状态如何保持的

文章分类
前端
文章标签