QQNT是去年腾讯放出的新架构QQ客户端,我在去年12月更新到了这个新版,已经用了3个月,今天发现了这好像有个问题。
这是一个关于接收的图片和视频资源产生重复文件的问题。
原来的PC QQ是把接收到的所有图片放在一个目录中,所有视频放在一个目录中,分别按照QQ自己的hash规则命名,当客户端接收到消息,需要加载图片或视频时将会先按照资源的hash在存放资源文件的目录中查找,如果没有就会从服务器下载一份。这是很河里的做法。
新版的QQNT在这一套接收资源文件的流程上基本上差不多,但有一个地方不同:它在每个类型的资源目录中又以“年-月”的格式加了一层目录,这个“年月”目前看下来指的是附件资源所在消息的发送年月(我这甚至出现了2019-06的资源目录)。这将导致每个月的消息附件资源(图片,表情,视频)不共享,上个月消息中接收过的表情图片在这个月对于QQ来说就不存在了,要重新下载一份。对于缩略图来说也一样,因为缩略图目录也在每个月的目录中单独有一个。
QQNT存放这些资源的路径是”C:\Users\用户名\Documents\Tencent Files\QQ号\nt_qq\nt_data”,其中”Emoji”里面是表情图,”Pic”里面是表情图以外的图片,”Video”是接收到的任何视频,可以发现它们里面全都以年月的子目录对资源进行分隔,我用Everything直接对Emoji目录查找,按文件大小排序,就已经发现了大量完全相同的表情文件出现在不同月份的目录里。
以下是在Everything中搜索到分别存在于1月和2月目录的相同表情文件
这样重复的表情文件和图片文件还有很多,随着时间推移,这种每个月不共用附件资源的特性根据接收消息数量的不同可能会导致空间占用快速增长,每个月都产生大量的重复文件(已确认每个月出现的相同文件都是单独的文件,并不是硬链接)。
目前不理解为什么要这么做,如果是为了避免在一个目录中存在大量文件导致文件系统操作效率降低的话,按照其”avatar”目录中的做法就很好,直接按文件hash的开头来划分子目录即可。
如果QQNT之后也坚持以这种方式存放文件,那用户就要注意定期清理本地重复文件。至于重复下载对服务器资源造成的浪费,那反正也不关用户的事🤔。