leaves615
V2EX  ›  问与答

微信文件存储,技术大牛的你应该如何解决问题?

  •  
  •   leaves615 · Mar 7, 2023 · 7383 views
    This topic created in 1341 days ago, the information mentioned may be changed or developed.
    最近一段时间看新闻,很多针对微信传输的文件在各平台存储的问题上有过针对性的批评。主要集中在以下两点。
    1. 本地文件在多次转发后会复制多份存储,没转发一次就会创建一个副本。导致微信本地文件占用空间越来越大,几十个 G 甚至更多。
    2. 微信把本地文件设置为只读权限,影响了直接打开编辑,导致非常的不方便。

    v's:如果是你来负责微信的本地存储功能,你会如果解决这个问题呢?让体验达到最优。
    37 replies  •  2023-03-08 09:43:43 +08:00
    zhaokun
    zhaokun
    Mar 7, 2023 via iPhone
    1
    禁止发图片文件!
    pq2Q3XZidsTF906J
    pq2Q3XZidsTF906J
    Mar 7, 2023
    2
    为什么要保存在本地? qq,电报,whatapp 都怎么做的跟着抄不行?
    murmur
    murmur
    Mar 7, 2023
    3
    为什么要解决问题,微信这个体量还有什么好改的么,不留几个陈年老坑不改难道程序员全裁掉?
    Eytoyes
    Eytoyes
    Mar 7, 2023
    4
    发送后删除本地文件做成选项,矛盾成功转移
    totoro625
    totoro625
    Mar 7, 2023❤️1
    5
    微信会员,10 元 /月,漫游 3 个月聊天记录
    微信超级会员,25/月,漫游 1 年聊天记录
    微信尊享会员,55/月,漫游 3 年聊天记录
    微信至尊会员,95/月,漫游 10 年聊天记录

    不开会员的天天弹窗让你删除本地文件,回收本地空间,让你不小心点错清空聊天记录,倒逼你开会员
    aaniao002
    aaniao002
    Mar 7, 2023 via Android
    6
    以用户感受为主,点了下载的那才叫本地储存,其他的叫临时文件。
    leaves615
    leaves615
    OP
    Mar 7, 2023
    7
    @yhm2046 qq ,telegram ,wahtapp 都是本地缓存的,app 现在的人均带宽情况下,还做不到全部云端。
    Building
    Building
    Mar 7, 2023 via iPhone❤️4
    8
    你自己需要的需求: a && b
    实际上的业务需求: a && b && c && d && (e || f || g) && ((h && i) || (j && k)) && l && n && m…
    cpstar
    cpstar
    Mar 7, 2023
    9
    @Eytoyes 4# 已经转移了,请取消勾选保留聊天记录
    Bingchunmoli
    Bingchunmoli
    Mar 7, 2023 via Android
    10
    @leaves615 其实是全云端,只是同步做不做而已
    Eytoyes
    Eytoyes
    Mar 7, 2023
    11
    @cpstar #8 没想到吧,默认就是不勾选。我再把默认不勾选也做成选项,矛盾再次成功转移
    litguy
    litguy
    Mar 7, 2023
    12
    本地文件存储的多份问题,不需要大牛
    只需要每个文件有个 引用计数
    转发一次,新的消息进来本地查重(例如基于 SHA1/MD5 这些,本地对文件在 sqlite 里面有个表,除了存储路径,还有对应的 SHA1/MD5 值),引用计数 + 1 就行了,不需要再次存储数据,新的消息指向唯一的文件路径就可以读取文件显示了
    这个存储的标准用法至少存在了 20 年了
    只是微信设计的奇葩而已
    不是大牛,存储软件研发十多年的普通工程师路过
    JohnH
    JohnH
    Mar 7, 2023❤️1
    13
    咱们可以从设计反推需求,分析如下:

    1.几年前我从桌面编辑完某文档后,通过拖拽发送给对方,随后就删除了。等我想再确认一下当时发送的内容时,发现文件已被清理。而现在的逻辑是只要产生文件发 /收,就会把文件副本到微信消息目录。
    需求:(普通)用户多次反馈发送的文件找不到了
    至于相同内容多副本的,不知道是不想做还是就没想这块的设计
    2.这个场景更容易想,某些企业,会发送报名表、申请表、xx 单子等等,用户都习惯于打开后就地修改,导致原始文件被改得面目全非。
    为了避免发送多次,干脆一刀切,全部只读。以后“教会”用户学会另存到本地修改。
    bluetree2039
    bluetree2039
    Mar 7, 2023 via iPhone
    14
    @JohnH 我确实碰到这样的情况。原始文件找不到了
    Mithril
    Mithril
    Mar 7, 2023
    15
    说是这么说,不过你要是问 “刚入职,发现公司做的产品本地文件在多次转发后会复制多份存储,而且都设置为只读,要如何改进解决这个问题?”

    大家肯定有一个算一个都回答你:能用吗?能用就不要改。

    那你猜去腾讯的会不会这么想。。。
    br00k
    br00k
    Mar 7, 2023
    16
    第一个问题,文件系统是可以解决的。苹果的 APFS 相同文件不会重复占用空间。
    Rennen
    Rennen
    Mar 7, 2023
    17
    @leaves615 tg 确实就是全部云存储,只要号不删,所有聊天记录就会一直在,甚至有人还拿 TG 当网盘。WhatsApp 我记得好像可以同步 google drive
    leaves615
    leaves615
    OP
    Mar 7, 2023
    18
    @Bingchunmoli 微信号称服务器端不存用户数据的。
    leaves615
    leaves615
    OP
    Mar 7, 2023
    19
    @br00k Apple 系不管是桌面系统还是手机系统占比都不高的。都是次主要系统。apfs 不能代表全部。
    fatekey
    fatekey
    Mar 7, 2023
    20
    直接抄 QQ ,文件方面 QQ 虽然也有不少槽点但是比微信强多了。
    kontttt
    kontttt
    Mar 7, 2023
    21
    微信文件存储每一个都会追加特殊内容用于溯源,看似同一个但不同场景里就会是非同一份文件
    zpxshl
    zpxshl
    Mar 7, 2023 via Android
    22
    @Mithril 不知道在腾讯会怎样,在我们部门的话,发现这种问题得赶紧写文档,再发出来宣布主权并编码优化,都是绩效呢...
    otakustay
    otakustay
    Mar 7, 2023
    23
    我觉得微信的处理方式没有问题,安卓加上 write on copy 就好了嘛
    icyalala
    icyalala
    Mar 7, 2023
    24
    @litguy 那你就需要考虑用户修改或者替换某个文件的可能,尤其是发送过程中修改,还有 md5 校验的耗时
    Bapper
    Bapper
    Mar 7, 2023
    25
    节省服务器开支,直接本地存一份,并且不让你改,只要下载一次就行
    hhjswf
    hhjswf
    Mar 7, 2023 via Android
    26
    云端存储就要开会员了,龙哥又不傻
    litguy
    litguy
    Mar 7, 2023
    27
    @icyalala MD5 不耗时,微信的图片没多大,这个不用考虑,我们平常按块计算 SHA256 ,一秒处理几十万个 IO
    icyalala
    icyalala
    Mar 7, 2023❤️1
    28
    @litguy 这里说主要说的是文件,发送个几百兆 ppt/pdf 还是很常见的。最近楼主和其他人抱怨的是 Windows 微信在收发文件时会把文件改成只读,然后用户想要修改保存时就会失败。但如果不保护这个文件,发送接收或者验证 md5 就可能有问题,毕竟都会耗时。所以我说如果你只存一份文件也同样需要考虑这种事情。
    Ericcccccccc
    Ericcccccccc
    Mar 7, 2023
    29
    这个真得加钱.
    Bingchunmoli
    Bingchunmoli
    Mar 7, 2023 via Android
    30
    @leaves615 法律规定必须保存两年以上
    unneeded
    unneeded
    Mar 7, 2023
    31
    说起来 iOS 里 APFS 的复制优化对微信起作用嘛?
    Bootis
    Bootis
    Mar 7, 2023
    32
    @icyalala 发送的时候 copy 一个副本发送,你本地编辑为什么会影响发送呢,接收的时候也不存在 md5 验证问题。接收后编辑直接脱离了 “收发文件”这个操作,更不存在问题。
    leaves615
    leaves615
    OP
    Mar 7, 2023
    33
    @Bingchunmoli 懂的都懂
    leaves615
    leaves615
    OP
    Mar 7, 2023
    34
    对比了 telegram 。没有提供“打开文件所在的文件夹”这类功能,要想保存到本地,就需要通过下载功能保存。
    印象中微信是先有“打开文件所在的文件夹”,后才有上述问题出现。到现在就是一个需求妥协的现状。
    icyalala
    icyalala
    Mar 7, 2023
    35
    @Bootis 你所说发送和接收都是 copy 副本来做,就是楼主和楼上抱怨的问题呀。。
    Bootis
    Bootis
    Mar 8, 2023
    36
    @icyalala 接收不需要副本,接收后修改跟收发文件已经无关,不需要管 md5 。发送用临时副本发送就好,发送完成不管成功还是失败就删除
    icyalala
    icyalala
    Mar 8, 2023
    37
    @Bootis 在微信里这么做不行,因为双方都可能在过了一段时间之后再次查看聊天记录,那记录里面的文件和图片都需要保持发送 /接收时的那个版本。聊天记录还能选择部分来转发,同样也要维持源文件。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1649 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 66ms · UTC 10:41 · PVG 18:41 · LAX 02:41 · JFK 05:41
    ♥ Do have faith in what you're doing.