【问题标题】:Is it faster to upload one big file or more smaller ones? [closed]上传一个大文件还是多个小文件更快? [关闭]
【发布时间】:2020-05-23 22:10:25
【问题描述】:

首先我不知道这样的问题是否已经存在,我试过但找不到,所以如果有我道歉。

我正在尝试通过将每个帧发送到客户端然后在网站上使用 Javascript 显示它来流式传输视频。 (所以这一切都可以使用 WebSockets)。

我在 PC 上托管 websocket 服务器(c# 是语言)。所以,我把整个屏幕截图并立即发送给客户。

现在,我的问题是:我应该将多个帧(比如 3 个?)存储到一个文件中,然后上传该文件,还是应该像我已经做的那样逐帧发送?我想知道哪个更快?

谢谢。

【问题讨论】:

  • 这实际上取决于“每个文件”的开销。 |然而,流媒体已经规定了如何做到这一点。从视频文件格式开始,它可以处理丢失的部分甚至改变质量水平。
  • 我还建议阅读速度咆哮:ericlippert.com/2012/12/17/performance-rant |通常我会告诉人们跳过第 1 部分,但你肯定需要阅读它。
  • 通常最好使用一个大文件而不是很多小文件。每个文件/每个请求的开销都会增加。但是,对于视频,您已经天生就有一个大文件。将其拆分为更小的文件确实没有意义。正如@swills044 所写,较低的网络层已经将每个大文件(甚至小文件)拆分成更小的帧、数据包等,这被认为是有用的。生活流媒体本身就是一个完整的主题。虽然非生命流媒体实际上只是“文件下载”。

标签: javascript c# websocket


【解决方案1】:

他们都将上传相同大小的文件,但会分开一个。理论上它们应该同时上传——这也取决于带宽。

【讨论】:

  • 这并不完全正确,但也不完全错误。许多小文件会产生“每个文件”的开销。那些可能需要完全独立的请求,或者只是单个大文件传输中的额外标头。单个大文件本质上会更快,因为它可以最大限度地减少开销。 |如果这种差异是相关的并且应该得到照顾?这确实是一个重要的问题。为此,我们可以链接速度咆哮:ericlippert.com/2012/12/17/performance-rant
【解决方案2】:

我相信无论哪种方式,它们在跨网络时都会被拆分为数据包,因此更多的是关于您希望如何处理客户端的帧。如果我是你,我会让较低的技术处理这样的细节(例如你正在使用的框架或库),除非你有特定目的来间隔发送帧,因为它会增加上传时间并增加更多空间对于单独加载的框架出现问题。例如;您可能会以错误的顺序发送拆分帧。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-04-03
    • 2019-06-18
    • 2013-02-20
    • 1970-01-01
    相关资源
    最近更新 更多