浏览器主要网络请求方式
- XMLHttpRequest:这是一个老牌的 API,用于在浏览器和服务器之间发送 HTTP 请求。它支持异步请求,并可以通过设置回调函数来处理响应。尽管它已经被更现代的 API 取代,但在一些旧的浏览器或特定的场景中仍然有用。
对于前端开发的我们来说,这个API再熟悉不过了,XHR 是最早接触到的网络请求 API,可以说是“老朋友”了。在很多老项目中,我们和后端沟通基本都用它。在我们平常所接触到的项目中,很多都是使用的Axios,在浏览器中,Axios底层也是使用了XMLHttpRequest对象来发送HTTP请求。
- Fetch:Fetch 是一个现代、功能强大的网络 API,它使用 Promise 使异步操作更加容易。Fetch 提供了更简洁的语法和更好的错误处理机制,并支持发送和接收各种类型的数据(如 JSON、文本、Blob 等)。
Fetch 可以说是网络请求的“新宠”,不仅语法简洁优雅,性能也非常出色。很多开发者都选择 Fetch 作为 XMLHTTPRequest 的替代方案,特别是在处理复杂的异步操作时,Fetch 显得更加得心应手。值得一提的是,Fetch的性能是要强于XMLHttpRequest,axios的默认请求方式已经改为了Fetch。
- Beacon API:
navigator.sendBeacon()
方法允许异步地发送少量数据到服务器,通常用于在页面卸载时发送分析或诊断信息。这个方法确保数据发送成功,即使页面已经关闭或用户已经导航到其他页面。
Beacon API 可以说是“默默无闻”的小帮手,特别适合在页面关闭或跳转时发送一些统计数据。不过,我自己学过但还没用过,希望以后有机会实践一下。
- WebSocket API:WebSocket 提供了一个全双工的通信通道,允许浏览器和服务器之间进行长时间的实时数据交换。这不同于传统的 HTTP 请求,HTTP 请求通常是客户端发起并等待服务器响应的模式。
实时通信,像我们一些告警需求,不是用的轮询就是用的WebSockets。
- Server-Sent Events (SSE) :服务器发送事件允许服务器向客户端推送实时事件。与 WebSockets 不同,SSE 是单向的,只允许服务器向客户端发送数据。SSE 基于 HTTP,因此它们比 WebSockets 更简单,并且能够在现有的 HTTP 基础设施上工作。
SSE 是一个简单实用的好方案,对于需要服务器单向推送数据的场景非常合适,比如实时更新股票价格。比起轮询和 WebSocket,SSE 的实现更简单,而且性能也不错。
- XMLHttpRequest Level 2(包括 FormData 和 Blob 对象):虽然这仍然是 XMLHttpRequest 的一部分,但值得注意的是,XMLHttpRequest Level 2 引入了一些改进和新功能,如 FormData 和 Blob 对象,它们使得发送表单数据和二进制数据更加容易。
XMLHttpRequest Level 2 是老朋友的“进阶版”,增加了很多实用功能。虽然它已经不再是最热门的选择,但在处理文件上传和复杂数据提交时,仍然是一个不错的工具。
- WebRTC (Web Real-Time Communication) :虽然 WebRTC 主要用于实时音频、视频和数据通信,但它也可以用于在浏览器之间建立点对点(peer-to-peer)的连接,并通过这些连接发送数据。这不是一个典型的“请求-响应”模型,而是一种更复杂的通信协议。
WebRTC,大多数都用于音视频,有去了解过这方面的知识,给我的感觉就是,和前端开发不像是一个赛道,但是还是挺好玩的,
Loading...