为什么我的 SPA 图像需要很长时间才能下载?

Why does my image take a long time to download for my SPA?

我正在构建一个 React SPA,我想要一个图像作为我主页上的背景。图片大小为1.2mb,第一次加载时有明显的延迟,甚至以黑白加载,然后轻弹到彩色

所以我尝试了一些东西。我已经压缩了。现在是700kb。我已将它添加到 s3 存储桶而不是本地存储。我创建了一个云前端分发,我正在请求它。显然,图片一旦下载就很好,我在应用程序的不同页面之间轻弹并返回主页,因为浏览器可能已经缓存了。但是,当我重新加载时,它似乎总是有点延迟。哦,我还为存储桶中的对象添加了一个缓存控制标签。无论如何我可以解决这个问题或让它加载更快吗?

哦还有一些代码:

const Container = styled.div`
    background-image: url(cloudfront.net/beach.jpg);
    background-size: cover;
    height: 100%;
    position: absolute;

    width: 100%;

    &:before {
        content: '';
        position: absolute;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        background-image: linear-gradient(to bottom right, #000, #fff);
        opacity: 0.2;
    }
`

我实际上是将它应用到组件本身而不是直接 html 或正文元素

在优化图像方面实际上有一些策略,但让我列出两个您可以采用的最直接的策略。

1) 与其使用 jpegpng 等传统图像格式,不如考虑使用 webp,因为它提供比前者更好的压缩率。

但是,请注意 browser support,因为 Safari 仍然不支持它。对于不支持 webp.

的浏览器,您可以考虑使用后备图像格式

2) 根据视口大小获取图像。您可以存储各种尺寸的图像,并确保您的应用根据视口尺寸获取正确的图像。例如,在移动设备上,您应该获取较小的图像。