一个页面要多人获取头像, base64 传输 body 巨大,有什么好办法吗

2023-06-23 11:43:56 +08:00
fyxtc  fyxtc
差不多 60 个人头像,base64 已经是压缩图片后编码的 b64 了,可是字符串放在 body 里还是巨大,差不多还有 4MB ,而且这个页面是会频繁刷新的,有成员变动就自动去获取新数据,几秒就干一个 4MB ,吃不消啊
3763 次点击
所在节点   问与答  问与答
38 条回复
hefish
hefish
2023-06-23 11:49:46 +08:00
我们都是 Img 标签指向 jpg 就完事了。
wolfan
wolfan
2023-06-23 11:50:41 +08:00
缩略一下再搞?
hsfzxjy
hsfzxjy
2023-06-23 11:58:12 +08:00
所有人头像放一个请求里吗?为啥要这样
fyxtc
fyxtc
2023-06-23 12:25:48 +08:00
@hefish 我也想...
hhjswf
hhjswf
2023-06-23 12:30:51 +08:00
头像不都是缩略图存本地吗
IvanLi127
IvanLi127
2023-06-23 12:34:28 +08:00
一个个拉呗,拉完缓存不就好了? http2 不是普及了吗?
k9982874
k9982874
2023-06-23 12:36:19 +08:00
无力吐槽。。
lalalaqwer
lalalaqwer
2023-06-23 12:39:27 +08:00
你们不会是把头像 base64 后存数据库吧
opengps
opengps
2023-06-23 12:41:28 +08:00
页面本身不是自带缓存吗?本地有的话,刷新也就只是请求一次
rabbbit
rabbbit
2023-06-23 12:42:28 +08:00
用 img 标签,浏览器会自动缓存
可以从头像大小入手,以 Github 为例 48x48 的头像可以处理到 4kb 以下
opengps
opengps
2023-06-23 12:42:44 +08:00
另外如果图片加载对页面影响大,那就单独从文件存储拉图片,不去占用后端接口服务器的带宽就好
Trim21
Trim21
2023-06-23 12:42:46 +08:00
频繁刷新这个问题可以考虑在客户端 diff 一下只拉新用户的头像,模拟一下 img 标签的行为...
felixlong
felixlong
2023-06-23 12:43:17 +08:00
base64 不是压缩。你把 base64 换成原始的 jpg 。每个图像差不多 5k 。啥都不用改。直接可以把 4M 变成 300K.
Trim21
Trim21
2023-06-23 12:47:10 +08:00
@felixlong 他应该是只能返回 JSON 格式,所以就先压缩了图片的二进制再用 base64 编码的。
tulongtou
tulongtou
2023-06-23 12:49:46 +08:00
nginx 启用 http zip ,文本的 zip 完会小很多
muzuiget
muzuiget
2023-06-23 13:11:05 +08:00
为什么要这样骚? img 标签加个 lazyload 属性完事。
jack4536251
jack4536251
2023-06-23 13:23:28 +08:00
@lalalaqwer 应该是,正确的做法是存路径
SnailLin
SnailLin
2023-06-23 14:56:09 +08:00
槽点太多,1 、base64 不是压缩 2 、后台返回头像的 url 即可 3 、所有头像懒加载、异步加载
Ericcccccccc
Ericcccccccc
2023-06-23 15:17:14 +08:00
?

后端肯定是返回链接地址, 哪有直接返回图片本身的.
tairan2006
tairan2006
2023-06-23 16:06:39 +08:00
你这啥问题?图片不都是返回地址么

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/950999

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX