Firefox 有时无法加载先前缓存的图片(头像)

我们正在调查一个似乎是 Firefox 的 bug,该 bug 与头像被缓存到磁盘然后被后续请求检索有关。

已向 Firefox 报告:

此问题表现为缺少头像,而通常应该存在,例如:

它们分别是:


<img loading="lazy" alt="" width="24" height="24" src="https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/mancera1979/48/732001_2.png" class="avatar" title="mancera1979 - Frequent Poster">
<img loading="lazy" alt="" width="24" height="24" src="https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/jca34f/48/340148_2.png" class="avatar" title="JCA34F - Frequent Poster">

并且这些 URL 分别重定向到:

https://europe1.discourse-cdn.com/arduino/optimized/4X/3/3/7/337a5e4169461364c9805cfad882c9eb0332bdf3_2_48x48.png
https://europe1.discourse-cdn.com/arduino/optimized/4X/4/b/8/4b8c803f304aa7e7c487184224ec9f970c96e8c4_2_48x48.jpeg

在使用开发者工具检查 DOM 时,Firefox 报告“无法加载图像”

从不是在初始请求时失败——它总是只发生在会从缓存加载图像的后续请求中:

有时重新加载页面会触发 Firefox 正确加载图像,例如:

重新加载后:


我们知道:

…该问题并非仅限于 Discourse 应用程序本身。我们已经使用仅包含头像链接的静态 HTML 页面重现了该问题:

…禁用 Firefox 中的 http3 并不能解决问题

…清除浏览器缓存后,下次图像可以正常加载

…最终用户已在桌面和移动设备上报告了此问题

我们怀疑:

…这与图像在重定向后加载有关

我们的一些托管环境安装了“重定向跟踪器”,它会导致对原始 URL 的请求返回图像本身而不是重定向到图像。我不认为有人在这些环境中遇到过此问题。

我们没有:

一个从头到尾一致且清晰的问题重现。

6 个赞

我在 Firefox 上也看到过这个问题。不知道是否相关,但我的网站使用 bunny.net 作为 CDN。

1 个赞

很有趣。好的,如果您有任何进一步的细节或重现步骤,请随时在此处发布。


:face_with_raised_eyebrow:
:microscope:

嗯,这真是太合适了 :laughing:

4 个赞

在我看来,这似乎是我们下一步要做的,@david,一个禁用此功能的站点设置,看看它是否会产生任何影响。

1 个赞

由于 @supermathie 在静态页面上有一个模糊的复现,也许我们可以尝试创建一个不带 loading="lazy" 的版本?这比修改 Discourse 来实现它要容易得多。

@supermathie,你能试试吗?

2 个赞

我不会使用任何其他 CDN!:rabbit2:

1 个赞

我一直在断断续续地重新加载它们,刚刚通过加载懒加载页面(成功)然后加载非懒加载页面(失败)来重现了问题:

不幸的是,Firefox 在打开开发者工具的情况下重新加载时似乎完全重新加载了资源(未设置“禁用缓存”),但是……这很奇怪:

用户似乎更改/更新了他们的头像,我们重定向到了新的头像?我不确定是什么触发了这一点 @david

我猜测这个额外的重定向短暂地触发了 Firefox 的错误。这与由于重定向跟踪器而产生的行为差异一致。

也许我可以触发它?

我更改了我的头像,让我们看看一小时后重新加载时是否会出错。

编辑:嗯,这次没有出错

但是我在这个页面上的胡闹似乎对其他页面产生了不良影响……现在这些头像都不起作用了,我认为这是因为一个网络请求“卡住了”。

2 个赞

今天:我用 lazy 重新加载了页面,加载正常:

然后我没有用 lazy 加载页面,结果:

:person_shrugging:

所以我想这意味着 lazy= 不太可能是问题的原因?至少排除了一个可能 :sweat_smile:

2 个赞