【问题标题】:How to load images faster and improve performance of website (React JS, GSAP and Netlify)?如何更快地加载图像并提高网站性能(React JS、GSAP 和 Netlify)?
【发布时间】:2022-01-24 18:39:21
【问题描述】:

我有一个网站部署在下面的 Netlify 上: https://hungry-mclean-362570.netlify.com/

Github: https://github.com/shindosu/mutsuki-portfolio-client

为了提供一点背景知识,该应用由 React JS 提供支持。在<div id="right-side"> 的主页中,我有两个正在渲染的 React 组件。它们每个都由三个 JS 提供支持,它通过 GSAP 在两张图片之间无限交替,并带有图像过渡动画。所以总的来说,我在右侧渲染了 4 张图像。图片的大小总共约为 13MB(更多图片即将推出)

我还有一个滑块,如果值达到>=50,那么样式和图像将会改变,让用户知道他们正在查看的图像的“类别”。

现在,它还没有完成,所以不要介意不完整。困扰我的是图像的加载时间(由三个 JS,GSAP 处理)加载时间非常长,我认为这也会影响其他元素的加载时间。

如何加快加载过程? 我尝试减小图像大小(之前是 60MB,现在是 13MB!);我正在尝试切碎更多,但我能做到的最多是 600~KB/img 左右,而不会损失任何实质性的质量。

还有其他方法可以解决这个问题吗?这将是一个投资组合网站,因此项目页面中将有更多图像,所以我假设如果我继续我现在正在做的方式,结果将与我的页面一样或更差正在努力。

感谢您的宝贵时间!

【问题讨论】:

  • 您拥有的那些巨大的 PNG 图像应该是 JPEG。即使是 PNG,通过 OxiPNG 运行它们也可以节省大约 33% 的大小。
  • 除了找到减小图像大小的方法(我认为它们可能仍然太大),您可以研究的一些技术是:1)在进入站点之前预加载器?在您进入网站时,至少所有主要资产都会被加载。 2)仅加载您首先看到的滑块图像,推迟其他图像。 3)也许在加载期间使用占位符资产? 4)您可以进一步优化图像,例如使用 webp 格式?
  • 给你一个使用 JPEG 而不是 PNG 的 PR:github.com/shindosu/mutsuki-portfolio-client/pull/9
  • 那里还有 three.js 和 gsap.js 的完整副本;如果有更小的版本只包含您需要的功能,那就更好了。
  • 您还使用了 1200 x 1800 的图像,但显示的尺寸要小得多。控制台会向您发出警告 THREE.WebGLRenderer: Texture has been resized from (1198x1800) to (1024x1024).,因此您可以考虑使用二次方的图像以避免浪费带宽。

标签: reactjs image three.js gsap


【解决方案1】:

要在 React 应用程序中更快地加载图像,您可以使用以下技术之一:

  1. 使用延迟加载方法 --> 图片只有在用户滚动到它时才会加载。
  2. 使用模糊技术 --> 这会在原始加载之前以低分辨率加载图像
  3. 使用 JPEG-XR 和 WebP 代替 PNG、JPG 等。

更多详情可以参考https://teacode.io/blog/how-to-speed-up-your-react-app-using-cloudinary-and-lazy-loading

注意:我不是专家。我也在搜索如何提高图片的加载速度,遇到了一些类似上面提到的文章。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    相关资源
    最近更新 更多