我想知道为什么从技术上讲Dropbox比 FTP 快得多?它使用什么样的技术?
我不是在谈论 diff 文件,我是在谈论在这两种情况下传输新文件,Dropbox 的速度要快得多。
我的意思是,对于我上传的文件,速度要快得多,可能比 FTP 快 10 倍。稍后我将再次试验更大的文件。
Dav*_*ett 30
这可能有多种原因。
FTP 协议远非有效。
FTP 传输至少需要两个连接(一个用于控制,一个用于数据),而 DropBox 可能只使用一个 HTTP 连接。此外,FTP 会话的数据连接可能会从服务器打开到您的客户端,如果您进行了 NAT,这可能会失败,因此您的 FTP 客户端可能会尝试以这种方式连接,然后尝试以其他方式连接失败。
FTP 连接上有很多来回变化。要发送文件,客户端至少需要发送两个命令(一个打开数据连接,一个开始发送),并且每次都需要等待服务器响应,这会增加额外的延迟。除了每个文件的这两次往返外,初始连接还有几次命令-响应往返——一次发送用户名,一次发送密码,至少一次设置传输参数(以确保服务器是期望二进制数据,而不是 ASCII 数据)。客户端也可能会发出一些额外的命令来从服务器获取关于它自己的信息。Dropbox 可能只使用一个 HTTP 请求,或者最多使用两个(一个用于身份验证,一个用于发送数据)。
最重要的是,根据您用于 FTP 传输的客户端(您没有指定编辑您的问题以包含该信息是个好主意),它可能会在每次发送操作后断开连接并重新连接下一次时间。出于长轮询的目的,DropBox 保持连接打开一段时间是不太可能的,以便尽快对此客户端应下载的可用新数据做出反应,因此它需要启动一个新的发送文件的 HTTP 连接不需要重新进行身份验证。
DropBox 客户端在发送数据(以提高速度和节省带宽)之前压缩数据是不太可能的,您的 FTP 客户端不会。因此,即使对于较大的文件(除非它们被预先压缩或加密),DropBox 和类似的实用程序也可能比基本的 FTP 传输快一些。
对于大文件,与实际传输数据所需的时间相比,上述前三点将显得微不足道,但第 4 点可能仍然非常重要。对于小文件,由 FTP 协议添加的所有额外设置时间可能比实际发送数据所需的时间长几倍。
Chr*_*sen 14
正如其他人提到的,Dropbox 可以跳过未更改的部分文件。而且,如果 Dropbox 在服务器端已经有副本(您或其他任何人已经上传的副本),它会跳过上传文件。
因此,如果您尝试上传与 Dropbox 已有文件相同的文件,则上传将被跳过(并且其他链接的机器可以开始从 Dropbox 服务器下载它)。如果您上传的文件与另一个已上传的文件几乎相同(尚不清楚已上传的文件是否必须是“您的”或可能来自任何用户),那么它只会发送足够的部分文件与已上传的文件结合时在服务器上重新创建它。
FTP 不能做这些事情(它是一个简单的协议,可以发送和接收数据流,而无需参考远程端可用的任何其他数据)。rsync和Unison 之类的工具可以“跳过对方已经拥有的块”,但通常仅限于比较同步层次结构中相同路径的文件内的块。Dropbox 似乎将这个想法扩展到文件集合(所以如果你“上传”两个几乎相同的文件,大概它可以安排只发送一个加上足够的“差异”来重新创建另一个)。
| 归档时间: |
|
| 查看次数: |
26484 次 |
| 最近记录: |