B 站有 Up 主声称「发现了微信越用越大的秘密」,居然「同一个文件存 10 份」,然后科技媒体也跟进报道,标题很惊悚,不少做技术的朋友居然讨论起细节来了,我看了一会儿觉得奇怪,这个讨论方向不对啊。
因为,该 Up 主的视频并不能证明微信一份文件存了 10 份。
微信技术团队会不会傻到完全相同的一份文件在手机上存 10 份?不去重存储?

当然,存在这种可能。只要能给出合乎逻辑的证明即可。
没有证实这个问题之前,我认为至少有如下几种可能:


1.过去一直是这样的糟糕实现,傻乎乎的把完全相同的一份文件存多份不去重,内部这么多年居然没人发现 。但这个可能又完全可以排除,因为微信的存储层面一直在优化,不断推出相关功能可以佐证。
2.注意到该视频是基于 iOS 微信。那么有没有可能迫于 iOS 文件系统的某些机制,必须要这样实现?我不懂 iOS 存储方面的技术细节,需要求证是否是因为 iOS 的 APFS 文件系统的 CoW 特性。
3. 当然还存在这样一种可能性:微信团队技术实现上出了问题,导致在某个环节或某个特定场景出了缺陷,只是过去没发现。这个可能性最大。
从常理上说,一个连 类 Unix 都用不明白的用户,只能用 Windows 文件环境去录视频做实验,难道技术会比微信团队还高明?居然发现了这么惊人的大缺陷?
直觉上,我不太相信。


有没有这样一种可能可能:
微信根本就不存在这个问题

有人会问,如果微信不存在这个问题,那么为什么该 Up 主的视频里,文件夹下面都出现了相同的文件了呢?你欺负我眼瞎?
咱就说有没有这么一种可能:微信已经做了硬链接( hard link )实现,而这个 UP 主是导出到 Windows 的,所以才会出现本来一份文件,现在每个文件夹里都会有一份相同的文件。
更简单一点的说,是这样的:微信已经对同一份文件,只存储了一份。发给其他人,并不需要重新存储,只需要创建一个链接(link)指向该存储位置就可以了。在操作系统层面,或文件系统层面,有软链接或硬链接的概念,具体差异是啥,不懂也没关系。不影响理解。但是无论是 Android 还是 iOS,其文件系统机制都是沿袭 Unix 的,而 Windows 操作系统,对普通用户而言没有文件硬链接的概念。那么,当 Unix 环境的数据导到 Windows 的时候,为了保证业务逻辑不受影响,怎么办呢?就要在 Windows 的文件环境里存储多份文件。这就是该 Up 主所看到的,但他所看到的,并不足以得出微信重复存储同一文件的结论。眼见不一定为实。
过去那些拿电脑上的备份空间说事儿的,其实都存在这个误区。
我这个不写代码的人都能理解这个基本的问题,我想微信团队里那些比我高出不知道几个段位的大牛们不至于不懂。如果他们真不懂,又怎么把微信做到今天的呢?
真懂一点点技术的话,直接去分析 Unix 环境下的文件系统才有信服力。盲人摸象得出来的结论不合乎逻辑。
年轻人非要证明微信的技术做得很垃圾,口头上嘲讽挤兑微信意义不大,你必须得找个经得起推敲的,能验证的方法。
那么,如何
科学地证明
微信技术做得很垃圾呢?

要证实微信真的一份文件存了十份,其实很简单。我们设计一个实验来证实一下即可。以下是我初步设计的实验步骤
1. 找一部稍微干净一点的 iPhone,所谓干净,手机里只安装微信。然后查看并记录系统使用空间。
2. 注册一个全新的微信号,添加 10 个联系人。操作完后,重启手机,查看并记录系统使用空间。注意:如果嫌麻烦这一步可以省略,但就会有误差。
3. 登录到这个微信号,传一个 50 Mb 大小的文件到自己的文件传输助手。退出微信,重启手机,记录系统使用空间。
4. 登录或打开微信,然后选刚添加的 10 个联系人,给每个人转发(注意这里选转发,确保是同一个文件)同一份 50 Mb 的文件或是视频。发完文件,退出微信。
5. 重启手机,查看系统使用空间,看看是产生了 50 Mb 的差异,还是 500 Mb 差异。
注意,实验的第 2 步如果有人嫌麻烦,也可以可以省略,但就容易产生误差。因为如果不是一个全新的号,那么可能会加入了各种群,你一旦打开了微信,群信息一进来,空间就会被占用。或者,你也可以考虑后半夜人少的时候做这个实验,毕竟,咱们是热爱技术的年轻人,对吧?
这个实验是不是不难做?大多数用户都按照步骤,都可以重复实验。如果有人做完这个实验,证实确实占用了 500 Mb 空间(误差 100 Mb 之内都算),联系我,我想我应该赠送 500 人民币或相同价值的礼物给你。别嫌少,我一篇文章赞赏都没这么多钱好不?
只要是设计的实验步骤,都存在改进的空间,欢迎各位朋友留言提出实验改进建议。
如果多个人做了实验之后,都证明的确存储了 500 Mb 的空间,那么微信就是想抵赖也没用是不是?别只动嘴皮子,动手做实验。
微信为什么越用越大?很简单,你用得多
你不但使用微信时间久,还加入了各种群,群里各种小视频小图片……需要存储的数据自然变多。
仅此而已。


题图:高品图像 GaopinImages
说明:
  1. 类 Unix:Unix 操作系统的衍生系统。
  2. APFS:Apple File System (APFS)。iOS、macOS 当前所使用的文件系统。
  3. CoW:Copy-on-write。APFS 的一个特性。如果看到这个缩写你不知道是啥,那可能你还没我懂。
  4. 严格来说,Windows 的 NTFS 文件系统也可创建硬链接,只是一般用户没办法操作,需要通过文件接口调用来实现。
继续阅读
阅读原文