HTTPS上的文件流速度很慢

时间:2015-10-26 10:43:59

标签: java performance https streaming

public class WebClientEx : WebClient
{

   protected override WebRequest GetWebRequest(Uri address)
   {

       HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);

       request.ReadWriteTimeout = 2147483647;

       request.Timeout = 2147483647;

       request.SendChunked = true;

       request.AllowWriteStreamBuffering = false;
       request.ContentType = "application/octet-stream";
       // request.exnc = Encoding.UTF8;

       return request;

   }

}

WebClientEx wc = new WebClientEx();

                  wc.UploadFileAsync(new Uri(@"https://www.exmaple.com/API/FileOperations/UploadFile.svc/UploadFileStream"), "POST", file);

我的问题是在URL中使用HTTPS,文件流速度很慢。与HTTP一样,它非常快。

1 个答案:

答案 0 :(得分:0)

考虑到HTTPS是一个安全(意味着加密)的套接字,而HTTP是一个未加密的连接。根据使用的HTTPS加密算法,它可能会降低文件传输的性能。这是由于需要加密和解密客户端和服务器之间的所有流量。如果您有一个大文件,传输数据需要花费很长时间才能在一侧进行加密,然后在另一侧进行解密。还需要使用安全插座进行密钥生成和交换,尽管这不是导致性能下降的主要原因。

进一步阅读:加密如何影响绩效(https://superuser.com/questions/173588/data-encryption-and-internet-speed)。

最终说明:如果您正在考虑传输加密文件,请尝试使用SFTP(http://www.jcraft.com/jsch/examples/Sftp.java.html)。