当前位置: 首页 > news >正文

HTTP2推的是静态资源,SSE推的是数据 - jerry

SSE 是通信“模式”,HTTP/2 是传输“协议版本”
SSE 可以跑在 HTTP/1.1 上,也可以跑在 HTTP/2 上


一、用途一句话对照(先记住)

能力HTTP/2 服务器推送SSE
用来做什么 提前推资源,加快加载 持续推业务数据
推送频率 一次性 连续 / 实时
数据类型 JS / CSS / 字体 JSON / 文本 / 事件
是否实时
当前是否推荐 ❌(已弃用) ✅(仍在大量使用)

二、HTTP/2「服务器推送」——只做一件事

页面加载性能优化

典型用途

让浏览器更快拿到“马上就会用到的资源”


✅ 合适的业务例子

📌 例子 1:首屏资源预推(历史用法)

客户端请求:
GET /index.html服务器主动推送:
/main.css
/runtime.js
/vendor.js

👉 理论上减少 RTT,加快首屏


📌 例子 2:后台系统固定依赖

/dashboard.html├── dashboard.css├── chart.js└── theme.css

服务器在返回 HTML 时顺带推送这些资源。


❌ 不适合的场景

  • 推送业务数据(订单、消息、状态)

  • 实时更新

  • 聊天、日志、通知

👉 这不是它的设计目标


⚠️ 现状提醒(很重要)

  • Chrome / Edge 默认关闭

  • HTTP/3 已移除

  • 实际项目 不建议再用


三、SSE(Server-Sent Events)——真正的“服务器推数据”

服务器有新数据,就主动告诉客户端


四、SSE 的真实业务用途 + 例子(重点)

✅ 例子 1:AI / 大模型流式输出(最典型)

用户提问
服务器边生成边推送:"你""你可以""你可以这样做..."

📌 为什么用 SSE?

  • 单向输出

  • 流式体验好

  • 实现简单


✅ 例子 2:后台任务进度条

导入数据中...
10%
25%
60%
100%
data: {"progress": 60}

👉 比轮询优雅太多


✅ 例子 3:实时日志 / 构建日志

[10:01] compiling...
[10:02] success
  • CI/CD 控制台

  • 云函数执行日志

  • 容器日志


✅ 例子 4:订单 / 状态通知

订单已支付
订单已发货
订单已完成

📌 特点:

  • 不需要客户端发消息

  • 只关心服务器变化


✅ 例子 5:金融 / 行情简化推送

BTC: 43210
BTC: 43250
BTC: 43190

⚠️ 高频场景建议 WebSocket,但低频更新 SSE 很合适


五、SSE 用法最小示例(直观)

前端

const es = new EventSource('/events');es.onmessage = (e) => {console.log('收到:', e.data);
};

Node 服务端

app.get('/events', (req, res) => {res.setHeader('Content-Type', 'text/event-stream');res.setHeader('Cache-Control', 'no-cache');res.setHeader('Connection', 'keep-alive');const timer = setInterval(() => {res.write(`data: ${Date.now()}\n\n`);}, 1000);req.on('close', () => clearInterval(timer));
});

六、选型速查表(直接可用)

需求用哪个
页面加载更快 HTTP/2
实时业务推送 SSE
日志流 / AI 输出 SSE
双向实时交互 WebSocket
资源优化 HTTP/2 / HTTP/3

七、一句话总结(你可以直接对别人说)

HTTP/2 推的是“资源”
SSE 推的是“数据”


一、AI 不停输出,本质是什么?

本质只有一句话:

服务器在一个请求里,持续把生成结果“流式”写回给客户端

关键点:

  • 不是一次性返回

  • 边算边发

  • HTTP Response Stream


二、SSE 是不是 AI 不停输出?(最关键)

✅ 在浏览器里:通常就是 SSE

因为 SSE 天生满足 AI 流式输出的所有需求:

AI 流式需求SSE 是否满足
单向(AI → 用户)
持续输出
文本为主
简单实现
浏览器原生支持
断线自动重连

👉 所以你看到的:

  • ChatGPT Web

  • 各种大模型控制台

  • AI 问答 Demo

99% 都是 SSE

http://www.rkmt.cn/news/111076.html

相关文章:

  • 从权限绕过到零信任架构:重构Dify检索结果安全体系的4个关键步骤
  • 使用MBDVidia进行三维MBD模型管理:PMI自动检查与修复+质量检测信息整合与分析
  • swift入门与进阶和iOS开发实践技巧
  • 软件测试面试题(测试自用)
  • net 是原始TCP,http是基于TCP的HTTP协议封装 - jerry
  • 从代码到用户手中:我的应用上架实战与核心技能突破之路
  • Dify重排序核心技术解析(20年经验总结的3大选型原则)
  • 音频切片效率提升300%?Dify 1.7.0配置优化实战经验分享
  • 全球USB厂商与设备ID大全
  • 普通耳机秒变AI翻译神器!谷歌Gemini加持,实时翻译还能传情绪
  • 私有化Dify SSL配置全流程(含自签名与CA证书对比实测)
  • 为什么你的Agent服务无法自动扩展?深度解析Docker Compose配置盲区
  • 【运维专家亲授】:Agent服务容器化中数据卷挂载的99%人都忽略的关键细节
  • 晨光文具转型路:从校门口文具店到盲盒新零售,直面名创优品与泡泡玛特竞争!
  • 工业控制系统的智能体革命:从刚性自动化到自主认知的范式迁移
  • GitHub Actions持续集成TensorFlow项目时使用清华源提速
  • Dify+PDF加密权限控制(仅限高级用户掌握的5个关键技术点)
  • 7个常见错误避免,确保YashanDB实施的成功率
  • 成为AI产品经理:程序员不可错过的AI时代红利
  • 【AI邪修·破壁行动】理解领域驱动设计DDD
  • 科研快报 |路侧感知新突破:用“多边形”注意力,让摄像头看得更远更准
  • 构建高可靠软件系统:性能与安全测试的融合与实践
  • LobeChat会话管理功能有多强?多话题并行处理不混乱
  • 抛弃脚本自动化:我们如何用 LangGraph 构建会“自我反思”的接口测试 Agent?
  • 鸿蒙三方库—harmony-utils使用
  • 常见的视频去水印原理
  • R语言下载catboost失败
  • 使用 TensorRT-LLM 高性能部署大语言模型
  • 如何卸载/更新Mac上的R版本
  • ISIS路由的基本配置