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

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

  •  1
     
  •   dejavuwind · 6 小时 56 分钟前 · 2432 次点击

    我不太理解。

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

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

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

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

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

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

    第 1 条附言  ·  1 小时 37 分钟前

    #24 惊现大佬释疑

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

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

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

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

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

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

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

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

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

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

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

    好吧,可能是我想太多了
    jaio1
        38
    jaio1  
       刚刚
    我在 b 站爬下来的视频文件发给别人,我这里显示已发送,对面实际却没收到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5381 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:37 · PVG 16:37 · LAX 01:37 · JFK 04:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.