数据库存用户头像只存文件名和存完整 URL 哪个好?

45 天前
 fgt1t5y

哪种好?

5803 次点击
所在节点    MySQL
59 条回复
helone
45 天前
肯定 1 咯,楼上说的多个 OSS 的情况再新增一个 bucket 字段呗,国内这种网络环境,无论是批量更换 CDN 地址或者域名被封都能很快解决
guanzhangzhang
45 天前
找找 uid+头像上传时间 生成短链的
QlanQ
45 天前
存完整的 URL
wuxiao2522
45 天前
@ShinichiYao #12 +1
Tink
45 天前
我觉得还是对象存储吧,存 1
iyiluo
45 天前
肯定第一种好,数据冗余低,信息密度高,迁移也方便
kenvix
45 天前
我的做法是写两个字段,filename 和 storage_provider ,这样的做法的好处是只存我文件名就行,并且如果后续需要新的基础路径或者存到 OSS/S3 上,那开个新的 storage_provider id 就行了
opengps
45 天前
存路径,毕竟很有可能将来改成对接对象存储来存储头像,到时候的路径就要改成个网址了
wuhao1
45 天前
选 1,选 2 这不是我正经历的么?
老系统:直接 uid.jpg 图片路径都不需要存 如果要调图片(直接饮用传参过来的 id 直接可以得到路径,少查一次数据库,又节省 了数据库的空间
新系统:有存路径,( oss 的路径,优点:不需要拼装直接从数据库读取地址(也就是上面的 缺点

我以为第一种更优秀 但是团队协作需要包容更多
iosyyy
45 天前
@aru 2 扩展起来不更麻烦 你以后如果要把图片都上到云还都得改 而 1 只需要重写个类改下返回值就能直接用
julyclyde
45 天前
@ShinichiYao 为啥要把数据膨胀三分之一存进去呢?
hhhzccc
45 天前
MySQL 存 id 号。OSS 存内容。用的时候作下关联。
JackLiang
45 天前
文件放 oss 省心
saranz
45 天前
这个应该是结合自己的业务需求,如果量级小,那全路径也无所谓。
但如果业务量大,多一个字符都是浪费。所以连后缀都可以由代码生成。
ShinichiYao
45 天前
@julyclyde 不是把字符串 base64 ,是把图像文件二进制 base64 存进去
julyclyde
45 天前
@ShinichiYao 对啊,你为啥要把图像额外 base64 一步?数据库 blob 字段直接用不就得了?
RainyH2O
45 天前
存储的本质就是选择用什么数据结构当容器存数据罢了,1 就是当作集合,2 就是当作树。实际上不分路径按一定的规范取文件名、给文件分类到不同文件夹、给文件加标签,这些都是当作树存储。选择外部存储也无非是把树结构的信息存到外部罢了。想清楚树结构的信息放到哪最能接受就可以。
Building
45 天前
头像不是和 id 或者其他字段关联的吗?不用额外记
adoal
45 天前
头像上传之后按用户 id 编制文件名保存到对象存储。
mangojiji
45 天前
这取决于图片是怎样被读取的吧?
如果图片路径是前端上写死的,那只存名字可以啊。
如果图片路径是后端下发的,那存完整 URL 或者相对路径都可以。

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

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

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

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

© 2021 V2EX