跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 用户上传冗余的图片文件,一般是怎么处理的呀?
未分類
19 1 月 2020

用户上传冗余的图片文件,一般是怎么处理的呀?

用户上传冗余的图片文件,一般是怎么处理的呀?

資深大佬 : nyse 10

需要用户上传图片场景,比如传头像、发朋友圈,可能会遇到这些情况:

用户上传后,编辑内容,删掉原有的图片;

部分图片上传失败,导致用户又重新上传了一遍;

用户换头像;

…

等等情况,会导致服务器上存在用不着的冗余文件,浪费存储空间。

大家一般都是怎么处理这些情况的?

大佬有話說 (25)

  • 資深大佬 : felinx

    原始上传文件留个记录表,对于没有被正确关联引用到的,即可判断的不可能再被用到的可以清理掉。

    用户换头像这种不一定,有些 APP 则有旧头像记录的。

    原则就是可断定的无用的则可清除。

  • 資深大佬 : CodingNaux

    md5 ?

  • 資深大佬 : emeab

    随表单上传咯.

  • 資深大佬 : mostkia

    一般直接替换文件吧。数据库内绑定图片的唯一 ID,然后用户如果需要替换,直接更新数据库里储存的 ID,同时删除旧的 ID 对应的文件。

  • 資深大佬 : lilydjwg

    refcount 呗。或者你搞 mark-sweep gc 啥的也行。

  • 資深大佬 : also24

    说真的,这些图片直接存起来可能成本更低

  • 資深大佬 : mokeyjay

    一般就是让它冗余着

  • 資深大佬 : BlackBerry999

    md5

  • 資深大佬 : kera0a

    感觉没必要处理,多占不了多少资源。等产品倒闭了一起删就行。

  • 資深大佬 : zzzmh

    举个例子,专门有一张 oss 表记录所有问题,如果是现在有一张头像,用户更新了一个新的头像,旧的就先软删除掉,然后 30 天没关联到任何地方且已软删除的,就连数据带文件一起删掉。也就只能做到这一步了。浪费是肯定存在的。

  • 資深大佬 : shuangya

    公司一般也不在意那点空间……
    实在在意的话,只有在某个地方记一下,然后定期清理……

  • 資深大佬 : xuanbg

    链接和文件是引用关系,对于哈希值相同的文件来说,冗余的不过是个链接罢了。

  • 資深大佬 : John60676

    现实是会存在不同文件,但是 MD5 相同的情况的…

  • 資深大佬 : caola

    @nyse 把待删除文件的路径写到一个表里,定时器去检查这个表,再去执行删除文件操作

    然而我是所有的文件的路径都记录在表里,删除时只是标记为删除(软删除),定时器去清理文件

  • 資深大佬 : clino

    用 sha256 之类的命名文件,可以防止存多份重复文件

  • 資深大佬 : sujin190

    如上所说,文件名用 hash,保证相同文件只存一份,其他的就无所谓了啊,反正现在磁盘页不值钱,删它干嘛

  • 資深大佬 : jugelizi

    …第一 磁盘真不值钱
    然后 头像地址可以用用户信息 hash 算出来 永远只有一张图片存在
    至于发布的图片删除了 可以监控图片日志 冷数据移走

  • 資深大佬 : zsdroid

    相对于流量来说,存储空间的费用可以忽略不计。

  • 資深大佬 : imdong

    意义不大但真的坐过这个需求,我安排给一个新来的程序员做了。
    他用了一个月的时间,这是我最痛苦的一个月…
    因为他研究了一个星期,也不知道该咋整。
    然后我说用 md5 存数据库就好了,
    然后又一个星期过去了。还没搞定。
    原来,md5($_FILE[0]->name),然后直接写到数据库了…
    先不说对系统随机的文件名取 md5 的问题,他么存数据库也没有查是否存在…
    我都懵逼了…………程序员可以有多菜???

  • 資深大佬 : zqx

    操作系统是如何清理内存的?

  • 資深大佬 : daozhihun

    最靠谱的就是不管它,浪费就浪费,没多少钱。
    如果真有需求要清理掉,其实比较好处理:
    定期任务:把所有图片的文件名和 hash 找出来,然后去比对数据库里有没有(数据库可以存文件名和 hash,在保存表单的时候),没有的就删掉。
    为了不影响系统正常的运转,可以分散在半夜里运行,并且可以只清理一年以前的。
    ——
    不过我还是觉得不要处理比较好,等你的存储真的不够了,你的产品应该赚了很多很多钱了随便再怼个几百 T 的存储没多少钱;如果你的新存储怼不起,很可能公司就要关门了

  • 資深大佬 : TransAM

    每个用户的每个唯一图片起个名字,不要用 hash,比如用户头像就是 <uid>_icon 。写的时候直接覆盖这个文件。

  • 資深大佬 : JamesR

    我都专门写个算法,每次上传成功后,清理以前上传过的用不着的文件。就是开发这个功能要稍微多花点时间。

  • 資深大佬 : tuine

    @imdong 有点强

  • 資深大佬 : BigDogWang

    对象存储默认生命周期一天后删除,用户确认了的提交会去掉这个删除的定时

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具