不要客户端 JS 的「极端服务端渲染」:光靠慢慢推送 HTML 就做出了 Flappy Bird
来源: scd31.com — 2025-02-16
概述
作者想探索一种完全不用前端 JavaScript 的动态网页方案。既然浏览器会随新到达的 HTML 逐行增量渲染、连 CSS 都能实时生效,那只要服务端持续开着连接、以人类可读的速率往浏览器「滴」HTML/CSS,就能从服务器端不断刷新页面。再配合一个指到隐藏 iframe 的 <form> 来无缝收集用户输入,他甚至用纯后端物理引擎加 60FPS 的 CSS 流实现了一版完整的 Flappy Bird 克隆——把前端 JS 全关掉网页照样能玩。实测性能不差:一个 Rust 实现单核能同时跑约 500 局游戏,每局带宽约 20KiB/s;真正的痛点是延迟——每次点击都要一个网络往返,离服务器越远越卡。副作用是这种「无限挂起的连接」差点把作者 Pleroma 实例的链接预览模块打崩,最后还上报成一个 DoS 攻击向量并被快速修复。
核心要点
- 服务端慢速流式推送 HTML/CSS,浏览器实时增量渲染,前端零 JS
- 用指向隐藏 iframe 的 收集输入而不整页刷新
- 纯后端物理引擎以 60FPS 推 CSS,做出可玩的 Flappy Bird
- 服务端单核约 500 局/秒、带宽 20KiB/s,主要瓶颈是点击延迟
- 无限连接是 DoS 向量,曾打崩 Pleroma 的链接预览
金句
Turns out that some applications really don't like sites that keep the connection open indefinitely, slowly trickling data through!
👍 0
👎 0
返回 Lobsters 首页