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