HTTP状态码和缓存

2024/7/5 | 字数检测:1446
AI摘要

HTTP(超文本传输协议)是传输文字、图片等超文本数据的约定和规范。HTTP状态码分五类:1xx(提示)、2xx(成功)、3xx(重定向)、4xx(客户端错误)、5xx(服务器错误),并列举了常见状态码。文章还提及Host等常见HTTP字段。HTTP缓存技术分强制缓存(Cache-Control/Expires,前者优先)和协商缓存(Last-Modified/If-Modified-Since与ETag/If-None-Match,后者优先)两种。

HTTP 协议

HTTP 名为超文本传输协议
更加详细的解释是:HTTP 是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」。

五大类 HTTP 状态码

  • 1xx 提示信息,表示目前是协议处理的中间状态,还需要后续操作
  • 2xx 成功,报文已成功收到并正确处理
  • 3xx 重定向,资源位置发生变动,需要客户端重新发送请求
  • 4xx 客户端错误,请求报文有误,服务器无法处理
  • 5xx 服务器错误,服务器在处理请求时内部发生错误

常见的一些状态码

200: 一切正常的成功请求
204: 成功请求,响应头没有 body 数据
206: 表示响应 body 返回的是一部分数据,用于断点续传和分块下载

301: 永久重定向,表示资源不在了,需要更换 URL 访问,响应头 Location 指明跳转地址
302: 临时重定向,暂时需要使用另一个 URL 访问,响应头 Location 指明跳转地址
304: 缓存重定向,不具有跳转含义,表示资源未修改,指示资源存在缓存,用于缓存控制

400: 一个笼统的客户端请求错误
403: 表示服务器拒绝客户端请求
404: 表示访问资源不存在或未找到

500: 一个笼统的服务器错错误
501: 表示客户端请求的功能还不支持
502: 通常是服务器作为网关或代理时返回的错误码,表示服务器自身工作正常,访问后端服务器发生了错 误
503: 表示服务器繁忙,暂时无法响应客户端

常见 HTTP 字段

HostContent-LengthConnectionContent-TypeAcceptContent-Encoding

HTTP 缓存技术

强制缓存和协商缓存

  • 强制缓存
    使用响应头Cache-Control(相对时间)字段和Expires(绝对时间)字段
    使用缓存与否交给浏览器主动控制,判断时间后来直接决定是否使用缓存
    注意: 如果 HTTP 响应头部同时有 Cache-Control 和 Expires 字段的话,Cache-Control 的优先级高于 Expires

  • 协商缓存
    协商缓存就是服务器与客户端协商后决定是否使用本地缓存
    两种方式实现 - 时间(响应头字段Last-Modified和请求头字段If-Modified-Since) - 资源唯一标识(响应头字段If-None-Match和请求头字段ETag)
    注意:如果两者同时存在,后者(ETag)优先级更高

强缓存和协商缓存的工作流程图: image.png

参考资源:小林 coding

更新时间:2024/7/5