串联是否会提高 I/O 性能?

Does concatenation improves I/O performance?

HTTP/2 是一个非常好的改进,现在我们没有创建多个连接来下载多个文件的网络开销,建议停止将 JS 和 CSS 文件连接到改进缓存,但我不确定从 I/O 的角度来看,必须从硬盘读取多个文件是否会影响性能。

我不知道像 Apache 或 nginx 这样的 Web 服务器是否有一些频繁文件的 RAM 缓存,这避免了 I/O 开销,我可以停止连接并不再担心这个。

不,必须从硬盘读取多个文件不会降低性能,特别是如果您使用的是当前的 SSD 硬盘驱动器。它们具有惊人的性能,并且由于它们的网络带宽、SSL 和其他一切都是瓶颈。

此外,操作系统会自动在 RAM 中缓存最近访问过的文件,因此您需要的功能不需要内置到网络服务器中,因为它已经内置到操作系统中。即使您使用的是磁力驱动器,这也能正常工作。

不过有一件事。我们(在 shimmercat.com)注意到有时压缩会因多个小文件而不是串联文件而受到影响。从这个意义上说,如果 HTTP/2 包含像 SDCH 这样的压缩格式就好了……但这对于特别小的文件比大文件更重要。总而言之,我认为小文件的缓存好处是值得的。