我有一个next.js项目(11.1.2版本),我想优化页面速度。我正在使用谷歌PageSpeed洞察力进行测量。目前,得分在以下几个方面:
一些背景:
对于我需要优化的页面,我使用静态站点生成和增量静态生成。最重要的页面是在构建时构建的,而“不太重要”的页面则是在需要时生成的。这些页面基于数据--我使用的是Heroku托管的Postgres。
到目前为止我所做的:
在Google PageSpeed洞察中,我可以看到LCP非常慢(6-7s)。我想这就是问题所在。我已经做了以下工作:
我不确定我做得对不对?还有什么我可以改进的吗?如有任何建议,敬请谅解!谢谢!
编辑这里是与折叠上方图像的预压相关的代码:
export function SingleItem({ item }){
// some logic
return(
<>
<Head>
<link
rel="preload"
as="image"
href={`/assets/pics/${item.name}.png`} />
</Head>
<div className={styles.image}>
<ItemImage
src={`/assets/pics/${item.name)}.png`}
fallbackSrc="/assets/pic-coming-soon.jpg"
alt="{`${item.name}`}" />
</div>
//more code
</>
)}
我在pages/item.js (即SSG/ ISG)中使用SingleItem组件。我不确定是否可以在组件中使用头标签?
下面是ItemImage组件:
const ItemImage = (props) => {
const { src, fallbackSrc, ...rest } = props;
const [imgSrc, setImgSrc] = useState(src);
const isSmallScreen = useMediaQuery("(max-width:780px)");
return (
<img
{...rest}
src={imgSrc}
onError={() => {
setImgSrc(fallbackSrc);
}}
className={`${isSmallScreen ? styles.smallImg : styles.bigImg}`}
/>
);
};
//css:
//.bigImg {width: 100%; height: 100%}
//.smallImg {width: 70%; height: 70%}
发布于 2021-09-06 08:56:15
也许只是个建议。尝试为映像实现延迟加载,因为这可能是加载最密集的映像。
https://stackoverflow.com/questions/69071759
复制相似问题