【发布时间】:2021-06-28 08:46:44
【问题描述】:
我在挪威的一家媒体公司工作,在极少数情况下,我们会看到图片无法完整呈现。发生这种情况时,我们可以刷新页面,图像仍将仅部分呈现。我们只在 Safari 上看到过这种情况,而且我能够在桌面 (Safari 13.1.2) 和移动设备 (iOS 14.4.1) 上重现它。
在网络选项卡中,图像似乎已完全交付。传输的字节数量是预期数量。事实上,如果我们将容器的高度增加 1px,图像会突然完整显示,没有网络活动发生。换句话说,浏览器确实收到了完整的图像,只是没有显示。
样式中的一切看起来都很正常,但我们仍然认为这与 CSS 有某种关系。但是,我们创建了一个本地覆盖,并且我们仍然能够使用以下代码进行重现:
<figure class="desktopi-45000 mobilei-45000 tableti-45000">
<picture>
<img itemprop="image" data-defer="view" sizes="(max-width: 640px) 640px,(max-width: 1024px) 1024px,1240px" title="- Du hører ikke hjemme her!" alt="- Du hører ikke hjemme her!" class="" srcset="https://www.dagbladet.no/images/73594916.jpg?imageId=73594916&x=15.742793791574&y=14.099216710183&cropw=72.431633407243&croph=57.57180156658&width=760&height=342&compression=70 640w,https://www.dagbladet.no/images/73594916.jpg?imageId=73594916&x=15.742793791574&y=14.099216710183&cropw=72.431633407243&croph=57.57180156658&width=900&height=405&compression=80 1024w,https://www.dagbladet.no/images/73594916.jpg?imageId=73594916&x=15.742793791574&y=14.099216710183&cropw=72.431633407243&croph=57.57180156658&width=980&height=441&compression=80 1240w" src="https://www.dagbladet.no/images/73594916.jpg?imageId=73594916&x=15.742793791574&y=14.099216710183&cropw=72.431633407243&croph=57.57180156658&width=380&height=171">
</picture>
</figure>
这是我们在问题发生时看到的图像比较。请注意,在错误发生之前可能需要多次尝试。
在试图解决这个问题时,我们遇到了a similar question。但是,提供的答案未能详细说明问题的根本原因。其中一个答案说使用decoding="sync",这似乎确实解决了问题(至少,我们不能用添加的那个来重现)。但是,由于它具有性能影响,这不是一个可行的解决方案。鉴于其他站点没有遇到此问题并且不使用decoding="sync",还有其他事情发生。因此,问题是为什么会发生这种情况?是什么原因造成的,有什么办法可以解决?
【问题讨论】: