HTTP的场景实践 | 青训营

113 阅读4分钟

HTTP(Hypertext Transfer Protocol)是一种用于传输超文本和其他资源的应用层协议。它广泛用于构建互联网应用。在这篇文章中我将介绍一些HTTP的场景实践,然后以 Google Chrome 浏览器为例,分析其涉及的请求中的存储策略。

一、常见HTTP的场景实践

  1. Web页面请求和响应

    • 用户在浏览器中输入URL或点击链接时,浏览器会发送HTTP请求到服务器,请求页面资源。
    • 服务器接收请求,处理后返回HTTP响应,包含HTML、CSS、JavaScript等资源。
    • 浏览器解析响应,渲染页面并显示给用户。
  2. API通信

    • 互联网应用通常使用HTTP来进行前后端数据交换,构建RESTful API。
    • 前端发送HTTP请求(GET、POST、PUT、DELETE等)到后端API,后端处理请求并返回数据。
    • 前端收到响应后,解析数据并进行相应的展示或操作。
  3. 文件上传和下载

    • 通过HTTP可以实现文件的上传和下载。
    • 前端可以通过POST请求将文件上传到服务器,后端接收文件并保存。
    • 前端也可以通过生成链接来提供文件下载,后端返回文件内容和相关信息。
  4. 身份验证和授权

    • HTTP的身份验证机制(如Basic认证、Bearer令牌)用于验证用户身份。
    • 服务器可以返回合适的状态码(如401 Unauthorized)来指示用户需要进行身份验证。
    • 授权也可以通过HTTP头部信息或URL参数来实现。
  5. Cookie和Session管理

    • HTTP可以使用Cookie来跟踪用户状态和会话信息。
    • 服务器可以在HTTP响应中设置Cookie,浏览器会将Cookie保存并在后续请求中发送到服务器。
    • 服务器通过解析Cookie来管理用户的会话状态。
  6. 跨域通信

    • 由于浏览器的同源策略限制,不同域名之间的JavaScript通信受限。
    • 使用CORS(跨源资源共享)机制,服务器可以在HTTP响应头中指定允许的跨域请求。
  7. 缓存控制

    • HTTP头部中的缓存相关字段(如Cache-Control、ETag、Last-Modified)用于控制缓存行为。
    • 前端可以通过这些字段告知浏览器是否可以缓存响应,以及何时需要重新请求数据。
  8. 长连接和WebSocket

    • 传统的HTTP是无状态的,每次请求都需要建立和关闭连接。
    • WebSocket是一种支持双向通信的协议,在一个TCP连接上提供长期的双向通信。

二、HTTP请求中Chrome浏览器使用的服务器策略

Chrome 浏览器在 HTTP 请求中实施了多种存储机制,以网页加载性能和减少服务器负载。

  1. 浏览器存储:

    • 当我们第一次访问某个网站时,浏览器会将存储资源(如图片、CSS、JavaScript 文件)下载到本地服务器。
    • 下次再访问相同的网站时,浏览器会检查资源的缓存标识(如 ETag 或 Last-Modified Time),判断资源是否过期。
    • 如果资源没有超时,浏览器会直接从本地服务器中加载资源,减少网络请求,提高加载速度。
  2. 服务器控制头:

    • 服务器可以通过HTTP头部信息来控制浏览器的行为服务器。常见的头部有Cache-ControlExpires
    • Cache-Control可以指定资源的服务器策略,如max-age指定资源的最大服务器时间,no-cache指示服务器需要重新验证,no-store指示不服务器资源。
    • Expires设定了一个绝对的过渡时间,但已经逐渐被Cache-Control替代。
  3. ETag 和 Last-Modified:

    • 当浏览器请求一个资源时,服务器可以返回一个唯一的ETag值,表示资源的版本。
    • 接下来浏览器请求相同资源时,会在请求中包含上面的 ETag 值。
    • 服务器根据ETag值判断资源是否有更新,如果没有更新,返回状态码304 Not Modified,浏览器直接使用服务器的资源。
  4. 强制刷新:

    • 某些情况下,用户可以强制刷新页面,这将忽略服务器并重新请求所有资源。
    • 在Chrome中,可以选择使用快捷键Ctrl + Shift + R或右键点击刷新按钮并“强制刷新”来执行该操作。
  5. 无痕浏览模式:

    • Chrome的无痕浏览模式不会保存缓存、历史记录等信息,每次启动都是全新的会话。

三、学习总结

总的来说,Chrome浏览器利用服务器策略来提高网页加载性能。它根据服务器返回的头部信息、ETag值、服务器标志等来判断是否使用服务器或重新请求资源。这有助于减少对服务器的负载请求,提高用户体验。