很多读者朋友都是Steam的忠实用户。现在宽带的带宽普遍增加。也有不少入住者,如200Mbps、500Mbps。也许很多网速快的朋友在Steam下载游戏时会发现自己电脑的CPU份额很高。下载速度快,赶不上CPU吗?在Steam的整个下载机制中可能会发生这种情况。

Steam使用了一套较为复杂的文件下载机制。首先,开发者可以给自己的游戏建立多个仓库,每个仓库中可以存放不同的文件。Steam会根据仓库中的文件内容,形成一份清单,同时将该仓库中的所有文件进行分块,每个块大小约为1MB,为了不让没有购买过该游戏的用户轻松获取到游戏文件,Steam内容系统将每个块都使用LZMA算法进行了压缩,并且使用一个256-bit长度的密钥对文件块进行了AES加密。每个仓库都有一个独一无二的密钥,并且在仓库的清单中记载有原始文件名、文件大小、文件校验值、文件类型和文件区块的元数据,同时还会记载每个区块的ID、校验码、文件位置偏移值和压缩前后的大小。通过这样的设计,Steam能够有效保障整个下载过程是高效的,并且在下载时不会有差错。同时,对于所有Steam用户来说,每个区块文件都是一样的,这也允许CDN存储静态的内容,而不是动态加密的。

大概就是这样子,把整个仓库的文件给压缩并加密了

在下载一个已经发售的游戏时,Steam是可以第一时间拿到用于解密文件的密钥的,为了节约时间,Steam使用了边下载边解密的办法,而LZMA解压缩(就是7-Zip用的算法之一)和AES解密都是较为吃CPU资源的,这也就是Steam下载速度越快,CPU占用率越高的原因了——因为你同时间要解密的数据量更大了。

在公司500Mbps的网络环境下,用Steam下载游戏大概会吃掉我这块i7-4770K约50%的占用率,还是很高的

而在下载尚未发售游戏的数据时,也就是在预载游戏时,由于拿不到用来解密数据的Key,Steam会把下载到的数据存到*.csd文件中,在游戏正式发售之后,就会使用拿到的密钥进行解密和解压缩。如果你的存储设备速度慢,而网速较快的话,那确实不如不做预载、直接在正式发售后进行下载。

本文主要参考了SteamDB对Steam下载机制的解读文章,如果各位读者对Steam下载还有别的疑惑的话,欢迎在评论区中提出。

1.《steam下载速度慢看这里!有问有答:为什么Steam在下载时会占用非常多的系统资源?》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《steam下载速度慢看这里!有问有答:为什么Steam在下载时会占用非常多的系统资源?》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.cxvn.com/gl/djyxgl/225748.html