![]() | 1 murmur 2021-11-29 14:09:09 +08:00 那种所谓渐进式加载好像是 png 的格式决定的,有两种,一种是从完整到不完整,一种是从糊到清晰 如果是加载 2 个图,我认为是浪费,反正最后都要加载图片,要么懒加载,要么骨架占位,何必还弄不清晰的图片 |
![]() | 2 devwolf OP @murmur 产品那边想要自家落地页还原出 https://unsplash.com/ 这样的效果,我便只能想到塞个模糊版了。 图片编码那块还没细究,是指图片上传前,统一处理成指定格式后,便能默认的从糊到清晰展示了吗? 我再查查看 |
![]() | 3 murmur 2021-11-29 14:25:41 +08:00 @devwolf 我不知道你是说的哪个页面,他们的列表页本身就是几十 kb 的缩略图,完全不存在什么过度加载 这种肯定是点击才加载大图 唯一的设计,看他们好像内置了多种缩略图格式,应对不同的屏幕大小,然后用各种计算去选一个适合的 但是本质上还是大小图懒加载 |
![]() | 4 sdqhzhm 2021-11-29 14:29:01 +08:00 ![]() progressive JPEG 看下 |
![]() | 5 cairnechen 2021-11-29 14:30:30 +08:00 你说的是往下滚动时候那个一闪而过的模糊状态? |
![]() | 6 bnm965321 2021-11-29 14:31:18 +08:00 nextjs/Image 好像都做好了 |
![]() | 7 yuzo555 2021-11-29 14:34:39 +08:00 ![]() 不知道你需要实现的具体效果是什么,如果是一般网页,可以先加上 loading="lazy",这样在图片出现在屏幕上时才会进行加载;其次就是图片本身需要 progressive ,这个是图片本身决定的,效果是先加载模糊的图像显示出来,然后再开始加载完整的版本,这样网络差的用户一开始也可以看个大概。 对象存储 /CDN 基本上都支持这个参数的。 |
![]() | 8 devwolf OP @cairnechen 嗯。产品那边后来补充,即使图片已经加载完成可看,也必须得有这种模糊渐进效果。 @yuzo555 对,就是这个参数。之前压根不知道有这么回事,就白忙活儿了好久,问上面上面也不知道…… “图片本身需要 progressive”,应该是这样的要求了 |
![]() | 9 oott123 2021-11-29 15:07:20 +08:00 ![]() 方向错啦 参考: https://blurha.sh/ |
![]() | 10 devwolf OP @oott123 感谢提供新思路。 blurhash 这个惊艳的插件,我也顺着找到了它的 react 版 https://github.com/woltapp/react-blurhash 粗看了一下,感觉像 md5 那样,前后的公用一套加密解码规则,后端在接受上传图片的时候生成,然后前端接受这个 hash 去实现渐进式加载,似乎还自带了性能优化(原理是精装版 base64 么?) 我看明白后,再问问主管后面优化版本能不能搞这个。这期我做的上文所述的改动,是纯前端的实现,改动很小,还没去唠嗑后端同事哩 |