V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dejavuwind
V2EX  ›  问与答

理性讨论:微信文件转发之前会先下载到本地,这么做的设计逻辑

  •  1
     
  •   dejavuwind · 63 天前 · 4680 次点击
    这是一个创建于 63 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我不太理解。

    服务器既然都存了为啥还自动先下载,再上传转发?

    收了一个 70m 左右的压缩包,我要在电脑打开,因为电脑没有登录微信,我就打开了 web 版的文件传输助手,然后手机点击转发到文件传输助手,结果我就看到有上传进度并且很慢(不要吐槽这个速度,办公楼这边 5G+iOS 就这个破速度,可能 4G 反倒还快些),

    然后当我再次点开那个收到的文件消息,已经显示可以直接打开了(此时转发的上传进度条还没有完成),而我转发之前,那个页面显示的是下载按钮(底部还有 13 天后失效啥啥啥的字样)。

    这种转发逻辑这么设计有什么优点或者目的吗?

    一开始我以为是为了省流,可这一来一回不是更费流量了么。

    我能想到的是防止初始文件消息被撤回?那么此时转发就会失败,但是先下载就不一样了,最多只会下载失败?

    第 1 条附言  ·  63 天前

    #24 惊现大佬释疑

    所以由于加密导致其实每次发出去的文件并不一样(虽然加密前是一样的),因为上传的是加密后的内容

    那这就难怪了 空间啥的都说得通了 用户看到的文件虽然是一模一样的 但是微信看起来的不一样(加密后不同)

    容我消化消化 各位看官你们懂了吗

    57 条回复    2024-10-22 11:33:51 +08:00
    iOCZS
        1
    iOCZS  
       63 天前
    就说微信要不要保留文件吧。长期保留肯定耗费空间,定期清理就可以减少消耗。但是文件消息肯定长期存在你本地的啊,到时候怎么转发?
    GooMS
        2
    GooMS  
       63 天前 via Android
    最简单呗 不在乎这些小东西
    minami
        3
    minami  
       63 天前
    张小聋是 foxmail 的作者,你把微信想象成一个邮箱就能搞清楚小聋的设计逻辑了
    paopjian
        4
    paopjian  
       63 天前   ❤️ 1
    微信号称不保存数据, 那转发逻辑就是所有信息存一遍再发送, 但是奇葩的是同一个文件还会存多份并且下来了竟然还能过期
    lyxeno
        5
    lyxeno  
       63 天前
    我猜:微信先做的发送和下载文件功能。开发者开发转发文件功能时并没有新开发一套转发文件逻辑。而是复用了原来的之前的下载和发送文件功能。
    tool2dx
        6
    tool2dx  
       63 天前
    你这种“不下载直接转发”属于小众需求,也许微信觉得没必要单独处理吧,一般都是下载或上传。
    cJ8SxGOWRH0LSelC
        7
    cJ8SxGOWRH0LSelC  
       63 天前
    @minami #3 初版微信确实是基于邮箱架构的, 但是这么多年下来, 有没有重构不清楚。
    whathappen
        8
    whathappen  
       63 天前
    和 4 楼说的一样,这样就不用被说文件经过 TX 服务器了。
    ahsgjs
        9
    ahsgjs  
       63 天前   ❤️ 4
    我来告诉你真实原因吧。小笼:有种别用/爱用不用/拿我咋滴?
    不是我恶意脑补。你可以自己看看微信更新时的日志都是什么?永远都是修复了若干问题这样的敷衍之词。“态度决定一切”日志是你不能决定的部分吗?
    CEBBCAT
        10
    CEBBCAT  
       63 天前
    @ahsgjs #9 Youtube 的更新日志你有没有看到过?又如何解释? https://ezone.hk/article/2806331

    @tool2dx #6 文件下载又上传,再小的需求乘以微信的用户量也是庞大的成本,微信发展到今日还不去做这件事,我认为他们内部肯定也是有过分析的。要么是积重难返,要么是故意为止。比如,可能是为了厘清文件所有权,所以先下载,再从本地上传
    wow0o
        11
    wow0o  
       63 天前
    代码简单..
    ZeroDu
        12
    ZeroDu  
       63 天前   ❤️ 1
    存就存了,还特么会过期就离谱
    Paladin
        13
    Paladin  
       63 天前
    就是傻逼产品啊
    shenyiyouge
        14
    shenyiyouge  
       63 天前
    前提错了,服务器没存,微信一直宣传所有聊天数据不在云端存储,也一直是这么做的。
    sir283
        15
    sir283  
       63 天前 via Android   ❤️ 10
    就是个傻逼程序,没有什么逻辑,就是单纯的为了恶心用户这样设计的,怎么恶心怎么来。换个设备登录就不能同步聊天记录跟文件,文件已经下载到本地了,过段时间还会自动过期打不开 转发文件还会频繁复制备份。都 2024 年了,还有这种脑瘫产品,张小龙没妈。
    ixcode
        16
    ixcode  
       63 天前
    不要用正常人的思维去理解微信的产品设计,毕竟张小龙不是妈生的
    Jakarta
        17
    Jakarta  
       63 天前 via Android
    我个人感觉是,为了抢占市场快速上架的产物,根本没有多少底层设计,怎么简单无脑就怎么来。
    zerovoid
        18
    zerovoid  
       63 天前
    微信,无论 app 还是 pc 端,都是垃圾中战斗机,
    很难想象这是中国最大的互联网公司设计的产品,
    都不说和 telegram 比了,连自家的 QQ 都不如。
    zerovoid
        19
    zerovoid  
       63 天前
    @shenyiyouge 想多了,微信绝对有存的,公安拿一个案件协查函过去,微信就把用户聊天内容拿出来了。要是微信真的不存,那所有人都拿微信做黑产通讯软件了。
    InDom
        20
    InDom  
       63 天前   ❤️ 2
    我们来看下面的例子:

    问题一:
    现在有一个水龙头,一个空水桶和一个着了火的草垛。
    我们应该怎么扑灭草垛上的火?
    程序员答:把水桶里面装满水,然后去扑灭草垛上的火。

    问题二:
    现在有一个水龙头,一个装满水的水桶和一个着了火的草垛。
    我们应该怎么扑灭草垛上的火?
    普通人答:用装满水的水桶直接灭火。
    程序员答:把水桶倒空,然后就可以用问题一的解决方案。

    问题三:
    现在有一个水龙头,一个装满水的水桶和一个草垛。
    我们应该怎么办?
    张小龙答:点火,然后用问题二的解决方案。
    shenyiyouge
        21
    shenyiyouge  
       63 天前
    @zerovoid #19 哪个公安把用户聊天内容调出来了?你见过还是听别人吹的?微信只在云端过滤并不在云端存储,你杠就是你对
    skyrocketing
        22
    skyrocketing  
       63 天前
    @tool2dx qq 的逻辑就是不下载,直接在电脑上右键或者手机上长按转发
    captain55
        23
    captain55  
       63 天前
    张小龙:app 都免费给你用了,用你点空间怎么了?
    rozbo
        24
    rozbo  
       63 天前   ❤️ 30
    这个问题没有你们想得那么复杂,别阴谋论了。。。。内部人士给你解答一下
    1. 文件确实没有存在微信服务器上,而是 aes 后存在 cdn 服务器上。在发送文件时,其实是发送的文件的 id 和协商的密钥。
    2. cdn 服务器 3 天左右会清理掉这些文件。
    这样,如果此时直接转发文件的 id 和密钥会导致几个问题,
    1.文件所有权不清晰
    2.文件过期时间不容易计算,资源不易释放
    3.文件密钥泄漏
    因此,最简单的方式就是 A 用户把 ID 和密钥发给 B 用户后,B 用户解密并并上传 cdn 后,再把新的文件 id 和密钥发给 C 用户。
    williamtech
        25
    williamtech  
       63 天前   ❤️ 1
    笑死了
    ala2008
        26
    ala2008  
       63 天前
    简单来说,就不允许转发文件。。
    Y25tIGxpdmlk
        27
    Y25tIGxpdmlk  
       63 天前
    @CEBBCAT #10 对啊,不矛盾啊,Youtube 也是一坨屎啊,你敢说 Y2B 的 APP 好用???

    抛开内容和广告,国内随便一个爱优腾的 APP 都比 y2b 好用。其实现在广告也可以不抛开,Y2B 的广告更恶心
    Y25tIGxpdmlk
        28
    Y25tIGxpdmlk  
       63 天前
    @shenyiyouge #21 一般小案子,小派出所去微信,肯定调不出来的。当然如果遇到重大案情,那是 100%可以调到的。不是微信说不存就是不存的,国家法律不允许他不存
    Y25tIGxpdmlk
        29
    Y25tIGxpdmlk  
       63 天前
    @sir283 #15 对,要不是 im 聊天软件天然有社交粘性,靠着当年 QQ 导流社交关系。不然早 TM 被干翻了。

    随便拿一个其他的 IM ,哪个不比他好用。无奈社交关系都绑死在微信了
    Tink
        30
    Tink  
       63 天前
    @rozbo #24 高,实在是高
    shenyiyouge
        31
    shenyiyouge  
       63 天前
    @Y25tIGxpdmlk #28 哪条法律,你说的大案调取微信聊天记录这种事有案例吗?说个名字我自己去查。
    Leasing
        32
    Leasing  
       63 天前
    @Y25tIGxpdmlk #28 依然是杠,就没有一点点干货,完全是猜测🤣
    zh584728
        33
    zh584728  
       63 天前
    @minami #3

    我的 foxmail 占用磁盘都快 30G ...
    Leasing
        34
    Leasing  
       63 天前   ❤️ 1
    一些人对微信/对张小龙这么大恶意? V2EXer 大部分都是程序员吧,是被 PM 虐的有火上网发泄来了?
    tyrantZhao
        35
    tyrantZhao  
       63 天前
    就是 wxg 最开始那帮人是做邮件起家的,所以很多都是复用的,后面基本没人会改,因为没什么 kpi 收益。
    FawkesV
        36
    FawkesV  
       63 天前
    @Y25tIGxpdmlk #28 你以为
    Y25tIGxpdmlk
        37
    Y25tIGxpdmlk  
       63 天前
    @shenyiyouge #31 刚刚去搜了下,都说服务器没存,最多也就缓存 3 天。公安调记录都是通过手机上取证。

    好吧,可能是我想太多了
    jaio1
        38
    jaio1  
       63 天前
    我在 b 站爬下来的视频文件发给别人,我这里显示已发送,对面实际却没收到
    lisxour
        39
    lisxour  
       63 天前
    @Leasing #34 有恶意是因为做出来的东西完全不经过脑子设计出来的
    darkengine
        40
    darkengine  
       63 天前
    @rozbo 另外发一份是不是也解决了”续命“的问题?

    因为有可能第一次发的文件已经到了 3 天的大限,转发的那份还没过到。

    如果是同一个文件,这时候 CDN 删还是不删就是个问题了。
    niubilewodev
        41
    niubilewodev  
       63 天前
    就是为了让转发变的有难度。
    要不然就有片哥在微信卖片了。
    hahasong
        42
    hahasong  
       63 天前
    因为微信是按做邮箱的架构做的,这样就都能解释通了
    secretlowland
        43
    secretlowland  
       63 天前
    @lisxour 24 楼已经解释得很清楚了,再说别人没脑子,是不是得想想到底是谁没脑子
    Rnreck
        44
    Rnreck  
       63 天前
    我只觉得这样做很呆很傻
    secretlowland
        45
    secretlowland  
       63 天前
    @darkengine 其实不用管 CDN 删不删,文件过期时间只针对用户而言,过期后这个用户不能访问该文件,其他用户各自有各自的访问权限和时间限制。
    secretlowland
        46
    secretlowland  
       63 天前
    @Rnreck 建议你先看看 24 楼的解释,直接开喷会显得自己很傻
    Rnreck
        47
    Rnreck  
       63 天前
    @secretlowland #46 那这样怎么解决本地的文件存储问题呢,每次用微信几个月之后都会膨胀到 10g+,这是小而美的实现方式吗
    secretlowland
        48
    secretlowland  
       63 天前
    @Rnreck 微信好友发送的文件并不是自动下载,未下载之前这个文件并不属于你,你下载了才能使用和转发,既然下载了,这文件就是你的“私人财产”,微信不应该也无权擅自删除你的文件,所以在必要的时候定期清理不需要的文件其实是用户自己的责任,并且微信也提供了文件清理的功能。不过,我觉得为了更好的用户体验,微信可以在适当的时候引导用户删除可能不再需要的文件。
    gpt5
        49
    gpt5  
       62 天前 via iPhone
    @Y25tIGxpdmlk @shenyiyouge
    看过一个律师的视频,他说他办过的涉毒涉黑杀人等案件,都没调出过什么微信聊天记录,并且他也从没听说过哪个案件从腾讯那拿到聊天记录了。
    lisxour
        50
    lisxour  
       62 天前
    @secretlowland #43 他是张小龙?还解释上了
    ligo
        51
    ligo  
       62 天前 via Android
    微信的服务器只转发消息,比如撤回也是一条消息。
    PrinceofInj
        52
    PrinceofInj  
       62 天前
    @rozbo 这么一解释看上去好合理呀。微信要是能出一个付费模式,所有内容存云端,我感觉大把人会付费。
    secretlowland
        53
    secretlowland  
       62 天前
    @lisxour 他不是,你是
    xixun
        54
    xixun  
       62 天前 via iPhone
    看了楼上说的,微信云端还真不存聊天记录啊😳
    Leasing
        55
    Leasing  
       60 天前
    @lisxour #39 甲之蜜糖,乙之砒霜。这么大的软件任何一个小功能能上线,我相信都是经过内部多人讨论决定的。
    lisxour
        56
    lisxour  
       60 天前
    @Leasing #55 这么大的软件,一个小功能能被这么多人喷,经过多少谈论都是失败的,同样量级的软件下,为啥同类软件的设计就没被喷,这是问题
    Leasing
        57
    Leasing  
       59 天前
    @lisxour #56 统计数据分享一下,我也想看看微信几亿的用户量,每个功能都有多少人喷,百分比是咋样的。我看看怎么得出很多人喷的结论。,“很多”是个什么量级的描述词。
    就说 V 站有 600,000 用户,喷的人有多少呢?
    同样量级的软件下,比如哪个软件做的好 我去搜是搜不到负面评价的呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2145 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:57 · PVG 08:57 · LAX 16:57 · JFK 19:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.