kkurdupov
(Konstantin Kurdupov)
1
大家好!我想提交一个 Bug。
已在 v2.4.5 和 v2.5.0 版本中复现。
前提条件
- 创建一篇包含视频/音频上传的帖子。
- 我使用安全媒体上传进行了测试,但非安全媒体上传也应能复现。
- 开始编辑该帖子。
- 打开浏览器的开发者控制台。可选:设置上传 API 的过滤器。
- 等待所有请求完成,然后清空控制台。
复现步骤
- 在左侧(编辑)区域输入任意内容。
- 检查浏览器的开发者控制台。
实际结果
- 每次按键都被视为更改,因此简单的打字操作会不断触发视频上传事件。
- 大量更改会导致发送海量请求,随后因 API 速率限制而拒绝请求,并导致论坛自动登出。
预期结果
请查看动图:
关于此 Bug 的说明:
这一行代码 导致了该 Bug。它在每次预览渲染(实际上即每次帖子内容变更时)都会调用 <video>/<audio> DOM 元素的 load 函数。
3 个赞
kkurdupov
(Konstantin Kurdupov)
3
是的,该问题在 2.6 beta 版本以及 test-passed 分支的最新提交(208d85aaff0392a3a796f84ea78670def6ed7b8e)中依然存在。
simon
4
这很奇怪。我只有在勾选网络标签页中的“禁用缓存”复选框时才能复现该问题。当我取消勾选“禁用缓存”时,结果符合预期。我使用的是 Ubuntu 系统上的 Chrome 浏览器。从你的视频来看,你似乎没有勾选“禁用缓存”,所以我不确定造成差异的原因是什么。
1 个赞
kkurdupov
(Konstantin Kurdupov)
5
“禁用缓存”不会影响请求的发送。它仅影响请求结果的来源——是来自浏览器的缓存还是真实源。
这些上传请求是由在每次按键时重新渲染预览的代码发送的,这会导致创建新的视频/音频 DOM 元素。因此,对于新的 DOM 元素会调用 load,这必然会发送请求。
即使是一个“已缓存”的(并非每次都是新创建的)DOM 元素,无论是否启用“禁用缓存”,它也只会在首次发送一次请求。
martin
(Martin Brennan)
8
我查看了一下,在安全和非安全的视频上传中都能部分复现该问题。在某个时间点,系统似乎会缓存并停止频繁发送这些请求,但这仍然是一个问题。你指出的这一行:
是我添加的,但它现在似乎实际上没有任何影响。如果我将它移除,视频预览仍然可以正常工作。我知道我们之前已经针对视频缩略图等进行了其他改进,这些改进可能已经解决了我为此添加该行时所面对的问题。因此,我认为直接移除这一行即可,这将解决多次请求的问题。
3 个赞
martin
(Martin Brennan)
9
4 个赞