http缓存机制
- 强缓存 Cach-Control(服务端设置)
在 Response Headers 设置 Cach-Control,例如 Cache-Control: max-age=31536000(单位是秒) 它有三个值:max-age、no-cach、no-store、private、public
- 协商缓存 Last-Modified和Etag,304状态码
Etag:当客户端请求服务端时,服务端将会返回资源和资源标识 Etag , 客端再次请求,Request Headers 带着 If-NonR-Match标识(Etag 唯一标识) 服务端接到请求处理如果资源没有更新变化,返回 304。如果资源发生更新,将返回新的资源和新的资源标识 Etag 。
Last-Modified:是资源最后修改的时间,再次请求,Request Headers 带着 If-Modified-Since,也就是 Last-Modified 返回的时间。 未需改则返回 304,否则返回资源和新的 Last-Modified
Last-Modified 和 Etag
- 会优先使用 Etag
- Last-Modified只能精确到秒级
- 如果资源被重复生成,而内容不变,则 Etag更精确
http1 与 http2 区别
HTTP/1和HTTP/2是两个不同版本的HTTP协议,它们在一些方面有显著的区别。以下是它们之间的一些主要区别:
- 传输方式:- HTTP/1: 使用明文文本进行传输,基于文本的协议。
- HTTP/2: 使用二进制格式传输,通过帧(frames)进行通信。
 
- 连接复用:- HTTP/1: 每个请求都需要建立一个新的连接,每个连接只能处理一个请求。
- HTTP/2: 引入了多路复用,允许多个请求和响应在一个连接上同时传输,提高了性能。
 
- 头部压缩:- HTTP/1: 每个请求和响应的头部信息都需要重复传输,可能导致不必要的带宽占用。
- HTTP/2: 使用HPACK头部压缩算法,减少了头部传输的大小。
 
- 流量控制:- HTTP/1: 依赖于TCP层面的流量控制。
- HTTP/2: 引入了基于帧的流控制,允许更精确地控制每个流的数据传输。
 
- 服务器推送:- HTTP/1: 无法实现服务器主动向客户端推送资源。
- HTTP/2: 支持服务器推送,服务器可以在客户端请求之前主动推送相关资源,提高性能。
 
- 安全性:- HTTP/1: 不提供任何加密措施,数据在传输过程中可能被窃听。
- HTTP/2: 更鼓励使用加密,虽然不是强制的,但大多数实现都会使用TLS/SSL进行加密传输。
 
总体而言,HTTP/2的设计旨在提高性能和效率,通过引入多路复用、头部压缩、流量控制等机制,使得Web页面加载更快。这使得HTTP/2相对于HTTP/1来说在处理现代Web应用时更具优势。
http2 与 http3 区别
HTTP/2和HTTP/3是两个不同版本的HTTP协议,它们在一些方面有着显著的区别。以下是它们之间的一些主要区别:
- 底层传输协议:- HTTP/2: 使用二进制协议作为传输层,取代了HTTP/1.x中的文本格式。它基于Google的SPDY协议,并引入了多路复用,允许多个请求和响应在一个连接上同时传输。
- HTTP/3: 引入了QUIC(Quick UDP Internet Connections)协议,是基于UDP(User Datagram Protocol)的协议,而不是TCP(Transmission Control Protocol)。QUIC提供更好的性能,尤其是在高延迟和丢包环境下。
 
- HTTP/2: 使用二进制协议作为传输层,取代了
- 连接建立:- HTTP/2: 使用单个复用的TCP连接。
- HTTP/3: 使用QUIC,它允许多路复用,同时还提供更快的连接建立和更好的性能。
 
- HTTP/2: 使用单个复用的
- 头部压缩:- HTTP/2: 使用HPACK头部压缩算法,减少了头部传输的大小。
- HTTP/3: 同样使用HPACK,但在QUIC的基础上,由于QUIC自身对头部的支持,可以更好地处理头部压缩。
 
- HTTP/2: 使用
- 流控制:- HTTP/2: 使用基于帧的流控制。
- HTTP/3: 则使用QUIC的流控制机制,这在一些方面更为灵活。
 
- 错误处理:- HTTP/2: 错误处理依赖于TCP连接的状态。
- HTTP/3: 在QUIC上实现,能够更好地处理连接切换和移动网络等情况。
 
总体而言,HTTP/3旨在通过引入QUIC协议解决一些HTTP/2中存在的性能瓶颈,并提供更好的用户体验。然而,具体的性能优势可能会受到网络环境和具体实现的影响。
WevSocket 和 HTTP 区别
- WebSocket协议名是- ws://可双端发起请求
- WebSocket没有跨域限制
- 通过 send和onmessage通讯(HTTP通过req和res)
- ws可升级为- wss(像- https)
HTTP 状态码
- 1xx服务器收到请求
- 2xx请求成功, 如- 200
- 3xx重定向,如- 302- 301永久重定向
- 302临时重定向
 
- 4xx客户端错误,如- 404
- 5xx服务端错误, 如- 500
