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

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

后端肯定是返回链接地址, 哪有直接返回图片本身的.
keenkiller
2023 年 6 月 23 日
你这啥问题?图片不都是返回地址么

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

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

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

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

© 2021 V2EX