我在 2026 年 10 月 21 日编辑自托管 Discourse 实例中的现有帖子时遇到了一个间歇性问题。编辑器卡在**保存中(Saving)**状态,我无法返回编辑器以恢复一些口述的文本。
事后我检查了 Caddy 和 nginx 访问日志以及 Discourse 的帖子修订历史。
环境
-
客户端: iPhone 16 Pro,Safari 主屏幕 PWA
-
iOS: 27.0.1
-
Discourse:
2026.10.0-latest +406 commits,如当天稍后管理仪表板所示(有 162 个较新的更改可用) -
托管方式: 自托管,私人研究档案库
-
反向代理: Caddy v2.11.4,提供基于 QUIC 的 HTTP/3
-
后端: Discourse nginx 位于 Caddy 之后,使用 Unix socket
-
网络: 最初使用大学 Wi-Fi,随后切换到 EE 蜂窝网络
发生了什么
我正在编辑一个包含物理讲座幻灯片图片的帖子。
我在图片下方口述了一些额外的数学笔记,包括分数,然后迅速按下了保存编辑(Save Edit)。
蓝色的水平保存中条一直显示在屏幕底部,并未完成。
我尝试点击“保存中”条,但这并没有重新打开编辑器。因此,我无法在其他地方选择或复制未保存的文本。
我等待的时间比平时更长。
只有在保存操作已经卡住后,我才手动禁用了 Wi-Fi,希望切换到蜂窝网络能让请求完成。
界面没有立即恢复。在尝试使用站点标志导航时,我也遇到了缓冲问题。
当我能够再次编辑该帖子时,口述的分数不见了。
服务器端调查
相关时间大约是 2026 年 10 月 21 日 BST 12:20。
我的 Caddy 日志显示:
| 时间 (BST) | 请求 | 结果 |
|---|---|---|
| 12:19:39 | POST /drafts.json |
200 |
| 12:19:40 | POST /uploads.json |
200 |
| 12:19:44 | POST /drafts.json |
200 |
| 12:20:08 | PUT /posts/70695 |
Caddy 状态 0 |
| 12:20:55 | PUT /posts/70695 |
200 |
失败的 PUT 请求使用了 HTTP/3。Caddy 记录持续时间约为 110 毫秒,而 nginx 记录了一个 HTTP 400 响应,且没有执行 Discourse 帖子更新控制器。
来自蜂窝连接的许多其他请求也在大约同一时间收到了 Caddy 状态 0。
Caddy 本身并未重启。Docker 报告自 10 月 15 日以来零次重启,操作日志中没有相应的重载或关闭事件。
草稿恢复
在事件发生前,有成功的草稿保存请求。
然而,我记得之前的内容是只有幻灯片图片,没有额外的口述文本。我后来输入了分数,并很快按下了保存编辑。
因此,我无法确定缺失的口述内容是否包含在任何一次成功的自动保存中。
当我随后检查帖子修订版本时,12:20:55 的成功修订版本包含图片,但不包含口述的分数。
我还检查了当前的草稿记录,但在检查时,旧主题和新主题的草稿键都没有剩余的草稿。
预期行为
如果编辑请求卡住或被中断,我希望编辑器能保留其未保存的内容,并提供一种重试、取消或返回编辑的方式。
特别是,理想情况下,当显示“保存中”时,界面不应使未保存的文本无限期地不可访问。
实际行为
编辑器保持不可访问状态,点击“保存中”条没有重新打开它,并且当编辑恢复时,口述的文本不再可用。
问题
-
当编辑请求未完成时,编辑器是否预计会无限期地保持不可访问?
-
是否有超时或恢复机制旨在在网络请求被中断时恢复编辑功能?
-
即使请求从未到达 Rails 帖子更新控制器,中断的保存编辑操作是否应保留内存中的文本或草稿内容?
-
如果此问题在 iOS 上再次发生,任何特定的客户端日志或仪器化会有帮助吗?
我理解网络变更可能解释了最终的请求取消。然而,在我手动更改网络之前,“保存中”界面就已经卡住了。
我尚未确定初始延迟是源自 Discourse 的 JavaScript、iOS/WebKit 网络还是大学连接。
相关讨论
我有一个现有的 MPTCP / iOS 连接连续性讨论,其中我从传输角度描述了这一相同的事件。
我之前还报告过 已编辑的帖子在 iOS 上的 DiscourseHub 中偶尔保持陈旧状态。在那个单独的问题中,编辑已成功到达服务器,但已渲染的帖子在刷新之前没有更新。另一位用户也报告注意到了这种行为。
我不知道这两个问题是否共享同一原因。当前事件不同,因为初始的帖子编辑请求没有被成功处理。
我还发现了两个早期涉及编辑器卡在“保存中”的报告:
-
编辑后“保存中”条卡住 (2023)
-
当主题需要审核时,编辑器卡在“保存中”状态 (2026)
两者都有已确定的不同原因,我不认为它们能解释这次事件。
我附带了一个 ZIP 文件 discourse_ios_save_evidence_2026-10-21_domain_redacted.zip (6.3 KB),其中包含选定的、已隐去域名的 Caddy/nginx 诊断摘录、修订信息以及上述时间线。
我很乐意得到关于编辑器如何从停滞的请求中恢复的建议,特别是在网络中断前无法复制未保存更改的情况下。