http和https在性能上有什么主要的区别吗?我似乎记得读到过HTTPS的速度是HTTP的五分之一。这对当前的web服务器/浏览器有效吗?如果有,是否有相关白皮书支持?
当前回答
这里似乎有一个令人讨厌的边缘情况:Ajax胜过拥塞的wifi。
Ajax通常意味着KeepAlive在20秒后超时。然而,wifi意味着(理想的快速)ajax连接必须进行多次往返。更糟糕的是,wifi经常丢包,并且有TCP重传。在这种情况下,HTTPS执行得非常非常糟糕!
其他回答
这里有一篇关于SSL握手延迟的很棒的文章(有点老,但仍然很棒)。帮助我确定SSL是客户端通过较慢的互联网连接使用我的应用程序的缓慢的主要原因:
http://www.semicomplete.com/blog/geekery/ssl-latency.html
一个更重要的性能差异是HTTPS会话在用户连接时保持打开。一个HTTP“会话”只持续一个项目请求。
如果你正在运行一个有大量并发用户的网站,预计会购买大量内存。
HTTPS requires an initial handshake which can be very slow. The actual amount of data transferred as part of the handshake isn't huge (under 5 kB typically), but for very small requests, this can be quite a bit of overhead. However, once the handshake is done, a very fast form of symmetric encryption is used, so the overhead there is minimal. Bottom line: making lots of short requests over HTTPS will be quite a bit slower than HTTP, but if you transfer a lot of data in a single request, the difference will be insignificant.
然而,keepalive是HTTP/1.1的默认行为,所以你会在同一个连接上进行一次握手,然后进行多次请求。这对HTTPS产生了重大影响。您可能应该对站点进行概要分析(正如其他人建议的那样)以确保这一点,但我怀疑性能差异不会很明显。
这里似乎有一个令人讨厌的边缘情况:Ajax胜过拥塞的wifi。
Ajax通常意味着KeepAlive在20秒后超时。然而,wifi意味着(理想的快速)ajax连接必须进行多次往返。更糟糕的是,wifi经常丢包,并且有TCP重传。在这种情况下,HTTPS执行得非常非常糟糕!
因为我正在为我的项目调查同样的问题,我发现了这些幻灯片。年长但有趣:
http://www.cs.nyu.edu/artg/research/comparison/comparison_slides/sld001.htm
推荐文章
- 在SQL Server上使用varchar(MAX) vs TEXT
- .toArray(new MyClass[0]) or .toArray(new MyClass[myList.size()])?
- 为什么说“HTTP是无状态协议”?
- 是什么导致JNI调用变慢?
- 我需要HTTP GET请求的内容类型报头吗?
- 如何允许本地主机上的Apache使用HTTPS ?
- 检查属性是否有属性
- 如何快速清除JavaScript对象?
- 如何让Chrome允许混合内容?
- Node.js vs .Net性能
- 如果使用if-return-return或if-else-return?
- 无法识别的SSL消息,明文连接?异常
- 正确的方式删除cookies服务器端
- REST DELETE真的是幂等的吗?
- 了解Chrome网络日志“停滞”状态