一直感觉我的首页加载慢 🤔,之前说过 Pages 是不支持 Next 中 Image 标签的优化的,就折腾了下 Cloudflare 的 Image 服务。

前面以为无论用多少都是有 $5 的低消,仔细看才发现可以不买存储包,直接用转换服务。

价格:
- 重设大小 - 免费 5w 请求/月
- 唯一转换 - 每 2000 个 $1,30天计一次

直接根目录新建一个 imageLoader.js,代码如图。

解释一下,Cloudflare 后台要针对域名开通 Image 服务,所以本地是不生效的,索性就直接写死线上域名😅。

其实魔法就在 /cdn-cgi/image/params/imageUrl 这一段,是 cf 图像服务的路径,当然域名要托管在 cf 上。

next.config.mjs 添加下面两行。
这样设置就对所有 Image 标签应用了自定义 loader。

当然如果只想要特定标签使用,就把上面的 imageLoader.js 改成 ts,放到项目中引用,像这样,注意 fill 配合 sizes 使用就行,语法类似 Tailwind 的 mobile first 原则,默认是 200px,然后根据 break point 匹配。

以我列表页的产品缩略图为例,原图 200KB 以上的应用后可以达到 20KB 以内,大小直接干掉 90%~

优化前后测了下,LCP 也提升了不少 😜

最后附赠一个小 Tip:
CF Image 服务跟网站里面自带的基础功能 Hotlink 保护有不兼容的地方,所以不要同时用。

以上!希望对你有帮助😉~
 
 
Back to Top