• FTP与HTTP上传文件的对比


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

    在这种情况下,通常有两种选择上传文件到服务器,那就是FTP协议和HTTP协议。

    以下列出了一些两者的不同点

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

    2、HTTP 和 FTP 客户端:通常的HTTP客户端就是浏览器,而FTP服务可以通过命令行或者用户自有的图形界面客户端。

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

    4、FTP要比HTTP早出现10年左右。

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

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

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

    8、HTTP中的持久连接:对一个HTTP会话来讲,客户端可以维护一个单个的连接并使用它进行任意数量的数据传输。FTP每次有数据的需要时都创建一个新的连接。重复的创建新的连接带来的体验并不好,因为每次创建连接都必须让双方握手验证,这消耗了很多时间。

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

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

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

    12、速度:可能最通常的问题了:哪一个传输更快?

    什么使FTP服务更快?

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

    2、没有过度的分块编码

    什么使HTTP服务更快?

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

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

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

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

    总结:

    当然最终的结果会因具体的情况而异,但我想说的是,单次传输一个静态的文件,很难衡量两者的区别。对单个的小文件来说,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协议来上传的,所以他们大都会要求文件符合一定的大小。

  • 相关阅读:
    开源操作系统发行版特性学习
    ssar
    OpenEuler特性学习 —— 统一共享内存 (share_pool)
    OpenEuler特性学习 —— Limit Pagecache
    oomd、lmkd与PSI
    使用git rebase onto一例
    Alibaba Cloud Linux 资源隔离及混部技术
    sysAK
    walk_tg_tree_from的图解
    编译ubuntu内核
  • 原文地址:https://www.cnblogs.com/peterYong/p/10998342.html
Copyright © 2020-2023  润新知