当前位置: 首页 > 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.jsqmd.com/news/100344/

相关文章:

  • 空间转录组降维必杀技:5步用R语言完成PCA、t-SNE与UMAP优化
  • 45分以下也能拿证!软考的三类合格标准!
  • 揭秘气候极端事件背后真相:如何用R语言完成高精度归因分析
  • Docker Compose中Agent服务扩展的5种高级模式(架构师私藏方案)
  • Java逻辑运算符介绍_Java基础_Java秘诀
  • 从权限绕过到零信任架构:重构Dify检索结果安全体系的4个关键步骤
  • 回滚莫队 学习笔记 - -Graphic
  • 杰理之IIS输入-长时间播放-概率无声【篇】
  • 揭秘Docker Compose中的Agent健康检测机制:如何避免服务假死?
  • swift入门与进阶和iOS开发实践技巧
  • 软件测试面试题(测试自用)
  • 使用MBDVidia进行三维MBD模型管理:PMI自动检查与修复+质量检测信息整合与分析
  • OpenAI聘请谷歌高管Albert Lee担任企业发展副总裁
  • 杰理之部分WAV歌曲会误识别成DTS格式解码【篇】
  • Docker MCP 网关负载均衡调优案例实录(99%工程师忽略的关键参数)
  • net 是原始TCP,http是基于TCP的HTTP协议封装 - jerry
  • Dify重排序核心技术解析(20年经验总结的3大选型原则)
  • 从代码到用户手中:我的应用上架实战与核心技能突破之路
  • 背包DP
  • yolov5实现游戏图像识别与后续辅助功能
  • AI 手机技术拆解:豆包手机 vs AutoGLM,两条“AI 手机”技术路线深度拆解
  • 音频切片效率提升300%?Dify 1.7.0配置优化实战经验分享
  • 全球USB厂商与设备ID大全
  • 抖音代运营服务商-官方百科
  • 普通耳机秒变AI翻译神器!谷歌Gemini加持,实时翻译还能传情绪
  • 论面向服务的体系结构在系统集成中的应用
  • 使用LabelImg工具标注数据(游戏辅助脚本开发)
  • Dify对接Spring AI总失败?一文看懂版本依赖的4大雷区
  • 30亿参数小模型如何媲美千亿级大模型?Nanbeige4-3B的技术突破与实践指南
  • Python期末复习:30个核心知识点完全详解