代码之家  ›  专栏  ›  技术社区  ›  David Murdoch

HTTPS与HTTP速度比较

  •  37
  • David Murdoch  · 技术社区  · 15 年前

    这是一个很受欢迎的问题,它得到了比它可能应该得到的更多的关注。为了阻止错误信息的传播,请先阅读以下段落和随附文章:

    速度不应该是决定是否使用HTTPS或HTTP的一个因素。如果你 需要 HTTPS用于 您绝对需要HTTPS来完成所有这些 总是

    请阅读 SSL is not about encryption 通过 Troy Hunt


    我被考虑在https下运行我的整个电子商务网站。我决定运行一个粗略的基准测试,通过https和http来测量156KB图像的下载时间,因为我已经了解到https在加密过程中会带来额外的开销。

    基准测试是使用Firefox的Firebug执行的,当从空缓存下载图像时,只需将“等待”和“接收”时间(所有其他时间均为0)从网络面板转录到Excel即可。

    http: 11.233 seconds
    Waiting     Receiving   Total 
    1.56        0.88        2.44 
    1.55        0.101       1.651 
    1.53        0.9         2.43 
    1.71        0.172       1.882 
    1.9         0.93        2.83 
    
    https: 9.936 seconds
    Waiting     Receiving  Total
    0.867       1.59       2.457
    0.4         1.67       2.07
    0.277       1.5        1.777
    0.536       1.29       1.826
    0.256       1.55       1.806
    

    • 对于https,服务器响应更快,但下载时间比http慢。
    • https总体上要快很多(~10%)。

    有人能解释为什么会发生这种情况吗?
    你认为一个文档(html、css、javascript)会给出不同的结果吗?
    有谁有更好的基准测试下载的方法吗?





    以下是测试图像:

    [已删除测试图像]

    • 在集成管道模式下使用IIS7。

    编辑:以下1px GIF(35字节)的基准:

    http: 2.666 seconds
    Waiting     Receiving  Total
    0.122       0.31       0.432
    0.184       0.34       0.524
    0.122       0.36       0.482
    0.122       0.34       0.462
    0.126       0.64       0.766
    
    
    https: 2.604 seconds
    Waiting     Receiving  Total
    0.25        0.34       0.59
    0.118       0.34       0.458
    0.12        0.34       0.46
    0.182       0.31       0.492
    0.134       0.47       0.604
    

    https速度更快;虽然在这种情况下是微不足道的。

    因此,在下午6:00左右的Godaddy共享主机上,通过https提供的特定服务器内容比通过http提供的要快。

    6 回复  |  直到 7 年前
        1
  •  19
  •   Remus Rusanu    15 年前

    如果你看看你的时间,http有更大的等待时间和更小的接收时间。另一方面,https具有较小的等待时间和较大的接收时间。我认为这是因为共享主机服务器上的http端口更忙,因此请求在队列中停留的时间更长,直到服务器接受为止。一旦被接受,请求的传输速度比https快。在https端口上,服务器上的通信量较少,因此请求的处理速度更快,但传输时间更长。

        2
  •  11
  •   Colin Coghill    15 年前

    您可能还需要考虑到HTTPS文档几乎会 永远不要缓存在用户浏览器之外的任何位置,因此您可能会发现 虽然对于单个用户来说没有什么区别,但是HTTP文档 对于共享缓存的大量用户来说,速度会明显加快。 (在一些地方,ISP将其客户 (通过共享代理缓存)

    当然,如果你不介意用户分享的话。

        3
  •  5
  •   Ryan    14 年前

    我认为您在HTTPS上看到的更快的性能不是偶然的。

    请注意有关结果的两件事:

    1. HTTP在第一个“总计”结果中总是更快,但在随后的总计中则较慢。
    2. HTTPS结果更加一致。

    现代负载平衡器通常在使用SSL来提高性能时启用压缩。虽然初始SSL握手确实会产生大量延迟,但用于维护会话的机制(“恢复握手”和对称加密而不是非对称加密)只会增加微不足道的延迟。因此,除非会话很短,否则压缩带来的性能好处要比会话维护带来的好处多。

    wrote an article 解释以前关于SSL的一些假设如何不再成立。

        4
  •  2
  •   Henri    15 年前

    https的工作原理如下: 首先执行4路握手(至少如果我没记错的话是4路), 在这里,客户机和服务器同意稍后使用的对称加密算法,并交换证书(包含公钥)。

    现在,他们发送使用会话密钥和一些加密算法(3des、aes、rc4、rc5等)加密的消息。由于对称加密并不是那么昂贵的操作,下载时间上的差异并没有那么大。

    较少的 等待时间是因为与http请求相比,您可能在http端口上的通信量更少,或者在执行https请求时的通信量更少。

    因此,为了优化性能,您应该使用尽可能少的https连接,因为握手是一个相对昂贵的过程。

        5
  •  1
  •   HttpWatchSupport    15 年前

    您是否通过代理访问您的站点?如果是这样,您可能会看到更好的性能,因为代理被绕过或简化为只处理初始连接请求。

    当您使用HTTP时,代理可能会检查和缓存内容,从而降低性能。

        6
  •  -1
  •   Alex    8 年前