为什么多个小文件的数据传输速度比一个大文件慢?

Why is data transfer speed slower for multiple smaller files than a huge file?

我一直注意到,例如,当一个 React 项目或整个网站的大小总和为 350-450 MB 时,需要 传输时间比 2-3 GB 视频文件或事实上任何数量的文件都捆绑到一个文件中,如 .zip/.rar /.iso.

一些 SC :-

转移一些反应项目:-

传输电影:-

我搜索了网络,但遗憾的是没有找到相关内容 posts/answers。
也许我没有使用必要的关键字...idk

如果可能的话,详细的解释会很有帮助:)
即使解释深入 OS 概念也很酷。 我只想知道为什么

根据https://serverfault.com/a/9743的建议,加上写入多个文件也需要在索引table中进行索引。它还将检查是否存在相同的文件名。这需要时间!

当您传输文件时,'scenes'背后实际上发生了很多事情:

  • 打开原始文件
    • 将路径字符串映射到操作系统实际理解的内容
    • 已检查安全性 (FILE_ACCESS):是否允许您读取和删除该文件?
    • 已检查更多安全性 (FILE_SHARE):您是否被允许,是否有其他人对该文件进行过任何操作?
  • 正在创建新文件
    • 将路径字符串映射到操作系统实际理解的内容
    • 再次安全(FILE_ACCESS):你可以在这里创建一个文件吗?和目录 在它之上,在它之上...
    • 创建实际的新文件,并将其放入文件系统查找中table
    • 设置默认文件属性
    • 不允许其他人read/write/delete新文件(FILE_SHARE)
  • 实际转账
    • 读取 4k 字节
    • 写入 4k 字节,然后重复
  • 原文件已删除
  • 设置新文件的最后修改日期
  • 新文件已关闭

我确定我在这里已经遗漏了很多步骤,但我在这里是为了说明在实际传输之前和之后发生的很多事情。即使文件为空(0 字节),我们仍然必须执行所有这些操作。这与已经给出的答案(例如碎片化)不同。