http和https在性能上有什么主要的区别吗?我似乎记得读到过HTTPS的速度是HTTP的五分之一。这对当前的web服务器/浏览器有效吗?如果有,是否有相关白皮书支持?
当前回答
考虑到SSL需要一个非sll HTTP不需要的额外加密步骤,这几乎肯定是正确的。
其他回答
这里有一篇关于SSL握手延迟的很棒的文章(有点老,但仍然很棒)。帮助我确定SSL是客户端通过较慢的互联网连接使用我的应用程序的缓慢的主要原因:
http://www.semicomplete.com/blog/geekery/ssl-latency.html
一个更重要的性能差异是HTTPS会话在用户连接时保持打开。一个HTTP“会话”只持续一个项目请求。
如果你正在运行一个有大量并发用户的网站,预计会购买大量内存。
因为我正在为我的项目调查同样的问题,我发现了这些幻灯片。年长但有趣:
http://www.cs.nyu.edu/artg/research/comparison/comparison_slides/sld001.htm
要真正理解HTTPS如何增加延迟,您必须了解HTTPS连接是如何建立的。这是一个很好的图表。关键在于,客户端不是在2个“腿”(一个往返,你发送一个请求,服务器发送一个响应)后才获得数据,而是至少要到4个“腿”(2个往返)后才能获得数据。因此,如果一个数据包在客户端和服务器之间移动需要100毫秒,那么您的第一个HTTPS请求至少需要500毫秒。
当然,这可以通过重新使用HTTPS连接来缓解(浏览器应该这样做),但它确实解释了加载HTTPS网站时的部分初始停滞。
除了到目前为止提到的所有内容,请记住,出于安全原因,一些(所有?)web浏览器不会将通过HTTPS获得的缓存内容存储在本地硬盘上。这意味着,从用户的角度看,在浏览器重启后,含有大量静态内容的页面加载速度会变慢,而从服务器的角度看,通过HTTPS请求静态内容的量将比通过HTTP请求的量要高。
推荐文章
- 确定记录是否存在的最快方法
- 在Cygwin中对HTTPS URL运行wget时,如何修复证书错误?
- 阅读GHC核心
- Python: List vs Dict用于查找表
- 为什么MATLAB的矩阵乘法运算这么快?
- for循环和for-each循环在性能上有区别吗?
- 就性能而言,使用std::memcpy()还是std::copy()更好?
- 什么时候我应该(不)想要在我的代码中使用熊猫apply() ?
- 如何加速gwt编译器?
- MySQL OR与IN性能
- 应该……接住环内还是环外?
- 哪个更快/最好?SELECT *或SELECT columnn1, colum2, column3等
- 什么是HTTP“主机”报头?
- 加快R中的循环操作
- INT和VARCHAR主键之间有真正的性能差异吗?