曾几何时,智能手机仅有几个GB的存储空间都绰绰有余,但如今128GB都快无法满足我们的需求了。
在一堆APP里,如果要问到最占储存空间的是哪一个,想必大部分人都会回答——微信。
在使用一段时间后,微信可以轻松占用30-40GB空间,是名副其实的“手机容量杀手”。
然而我们的日常生活已经彻底离不开它,只能一遍遍清理缓存、卸载重装,给它腾出空间来。
事实上,最初的微信也确实如同它所标榜的那样“小而美”。
在2011年1月发布的1.0版本中,微信安卓APK安装包只有457KB,还不如一张照片大。
但在11年后,微信安卓版的安装包的体积就已经膨胀了575倍。
前不久,一名网友逆向拆解安装包后发现,微信的整个安装包中,真正用于实现聊天的代码可能只占0.1%。
其他大部分代码,则都是用来运行小程序、视频号等功能的。
那么,除了安装包本身所占用的体积以外,另一个导致微信变得越来越臃肿的用户数据,又是从哪里来的呢?
近日,B站上的一位UP主 @科技老男孩 深扒微信,为我们解开了这个长久的困惑。
@科技老男孩 将iOS版微信的用户数据导出到电脑上,找到其中最重要的“乱码”文件夹。
UP主解释称,这个所谓的“乱码”其实就是用户微信号的MD5值,里面存放的就是在这台手机上所登录的微信用户数据。
也就是说,如果一部手机上登录过两个微信号,就能看到两个这种“乱码”文件夹。
进入常用微信号的“乱码”文件夹后,再通过第三方软件进行查看。
UP主发现,文件夹里占用空间最大的,就是聊天中发送的照片、视频文件了。
更让人疑惑的是,很多视频、音频文件都是重复的。
而且,这些相同的文件有时候是存在不同的文件夹下的,这些文件夹的名称分别为好友微信号的MD5值。
这似乎意味着,微信把我们发送给不同好友的同一份文件,分别都保存了下来。
对此,UP主感到非常震惊。
他表示,按照正常程序员的逻辑,如果用户要发送一份同样的文件给10个用户,那么通常只会保存1份在本地,其他的9份做映射就行。
但微信的逻辑,却是各自都保存一份,这样一来就会造成极大的空间浪费。
比如,我给10个好友发送了一个50MB的视频,那么微信就会占用450MB的空间。
为了验证这个猜想,UP主还给十几位好友发送了同一首歌曲。
最终,也真的在用户数据文件夹里找到了这十几份重复的歌曲文件。
这些文件加起来,刚好对应上了新增长的用户数据文件夹体积的大小。
虽然听上去很滑稽,但其实微信这样做的初衷也很简单:
就是担心用户在删除跟某个好友的聊天缓存文件时,也同时清理了与其他好友的同一份图片视频。
所以就简单粗暴的用无数个文件夹保存无数遍文件备份。
这便是微信没多久就会冒出几十个G用户数据的最大原因了。
对此,UP主吐槽称,“这种逻辑,只有最究极的贵物程序员才能想出来。”

就算是百度网盘,也会在用户上传文件时对比一下散列值和大小,以免重复上传。

而微信的这种代码上的缺陷,使得用户在不明就里的情况下,造成了手机空间的浪费。
只有通过一次次的手动清理,甚至是卸载重装,才能彻底清除多余的数据。
该视频曝光后,也引发了网友热烈讨论。
有网友评论称,“自己服务器数据库当宝,用户储存空间当垃圾场。”
“这很符合鹅厂的作风。”
此外,ok酱搜索后发现,早在几年前就有不少用户提出过这个问题了。
只不过时至今日,这样的情况依然没有得到改善。
如今的互联网APP,都恨不得把自己做成一个操作系统。
社交、支付、浏览器、直播、短视频、游戏......各种各样的功能一股脑塞进去。
根本不顾用户是否都用得上,手机空间是否够用。
如今的微信对于不少用户来说,确实是有些“不堪重负”了。
希望官方能够尽快意识到这一点给用户带来的困扰,在未来对于这一点进行优化,提升用户的使用体验。
  • 原视频地址
https://www.bilibili.com/video/BV1UG411V7vm
- EOF -
关注「程序员的那些事」加星标,不错过圈内事
点赞和在看就是最大的支持❤️
继续阅读
阅读原文