Lighthouse 性能分为什么突然掉到30分?
我最近用 Lighthouse 测了一个 React 页面,性能分从 80 多直接掉到 30 分,完全没动过关键资源加载逻辑,很困惑。
页面结构很简单,就是个带懒加载图片的列表,但 Lighthouse 报告说「Reduce unused JavaScript」和「Eliminate render-blocking resources」问题严重。下面是我组件里的一段代码:
import { lazy, Suspense } from 'react';
const LazyImage = lazy(() => import('./LazyImage'));
function ImageList() {
return (
<div>
{[1, 2, 3].map(id => (
<Suspense key={id} fallback={<div>Loading...</div>}>
<LazyImage src={<code>/img-${id}.jpg</code>} />
</Suspense>
))}
</div>
);
}
我已经用了 Suspense + lazy,按理说 JS 不该阻塞渲染啊,怎么还会被扣这么多分?是不是动态导入反而让 Lighthouse 误判了?
这样既保持懒加载功能又不会触发Lighthouse的JS阻塞警告。测试时记得用生产环境build,开发模式的React会自带性能损耗。