FTP与HTTP上传文件的对比

  许多站点,好比facebook或一些博客等都容许用户上传或下载文件,好比论坛或博客系统的图片。java

在这种状况下,一般有两种选择上传文件到服务器,那就是FTP协议和HTTP协议。web

如下列出了一些二者的不一样点算法

一、HTTP协议是用来浏览网站的,而FTP是用来访问和传输文件的,FTP文件传输有点批量上传和维护网站的意思,而HTTP文件传输更多的是为终端用户提供文件传输,好比电影、图片、音乐之类。编程

二、HTTP 和 FTP 客户端:一般的HTTP客户端就是浏览器,而FTP服务能够经过命令行或者用户自有的图形界面客户端。浏览器

三、HTTP 头:HTTP 头包含了 metadata ,好比说最后更改的日期、编码方式、服务器名称版本还有其余的一些信息,而这些在FTP中是不存在的。安全

四、FTP要比HTTP早出现10年左右。服务器

五、数据格式:FTP能传输ACSII数据或者二进制格式的数据,而HTTP只用二进制格式。网站

六、HTTP中的流水线:HTTP支持流水线,这就意味着客户端能够在上一个请求处理完以前,发出下一个请求,其结果就是屡次请求数据以前省掉了部分服务器客户端往返时延。而FTP并无这项支持。编码

七、HTTP中的动态端口:FTP一个最大的问题就是它使用两个链接,第一个链接用来发送控制指令,当接受或者发送数据的时候,又打开第二个TCP链接。而HTTP在双向传输中使用动态端口。spa

八、HTTP中的持久链接:对一个HTTP会话来说,客户端能够维护一个单个的链接并使用它进行任意数量的数据传输。FTP每次有数据的须要时都建立一个新的链接。重复的建立新的链接带来的体验并很差,由于每次建立链接都必须让双方握手验证,这消耗了不少时间。

九、HTTP中的压缩算法:HTTP提供了一个在一些压缩算法中客户端和服务器共同协商选择的办法。其中gzip能够说是最有影响力的一种,而FTP中并不存在这种复杂的算法。

十、HTTP支持代理:HTTP一个很大的特色就是支持代理,这种功能是构建在协议里的,而FTP并不支持。

十一、而FTP也能脱颖而出的一点是这个协议是直接面向文件级别的。这觉得着FTP有例如能够经过命令列出远程服务器上的目录列表,而HTTP没有这个概念。

十二、速度:可能最一般的问题了:哪个传输更快?

什么使FTP服务更快?

一、没有在发出的数据中加入meta-data,仅传输原二进制文件。

二、没有过分的分块编码

什么使HTTP服务更快?

一、重用已存在的持久链接,从而有更好的TCP表现。

二、流水线的支持使得从同一个服务器上请求多个文件更快。

三、自动的压缩机制使得传输的数据更少。

四、没有命令/应答机制最大限度的减小了往返时延。

总结:

固然最终的结果会因具体的状况而异,但我想说的是,单次传输一个静态的文件,很难衡量二者的区别。对单个的小文件来讲,FTP传输更快,当传输多个文件时,HTTP更快

1:用http协议上传更适合web编程的方便

传小于1M文件速度要比用ftp协议上传文件略快,安全性好。不像ftp那样,必需要启动一个ftp服务才行。

http上传就是经过http协议来向服务器上传文件,因此服务器端应该有一个处理客户端请求的页面。

2:用ftp协议上传文件大于1M的文件速度比http快;文件越大,上传的速度就比http上传快的倍数越大。并且用java编写程序,ftp比http方便。

上传大文件:

Ftp有明显的天生的优点,不须要将文件所有载入内存中,http在这方面就比较薄落了,固然也有人实现了分块http上传,但整体来讲http上传对于大文件不适合,多大算大呢?

在局域网中,我的认为超过了500M的文件就不适合使用http协议来上传了。

上传小文件:

很是适合http协议来上传,由于简单,并且能够实现更精细的控制,权限控制比ftp要简单的多。

对于C/S类型的应用程序,若是肯定文件比较小,那么能够采用http协议来上传,若是文件比较大的话,那最好仍是采用ftp来上传吧。

对于B/S类型的应用程序,由于Web应用程序自己上传的就比较小,目前大部分网站采用的都是http协议来上传的,因此他们大都会要求文件符合必定的大小。

相关文章
相关标签/搜索