Answers:
为了进行快速,肮脏的测试(即无任何优化!),我在本地Ubuntu 9.04 VM上同时启用了带有http和https(自签名证书)的简单Ubuntu apache2默认网站(上面说“它有效!”),并运行了apache ab
包含10,000个请求的基准“ ”(无并发)。客户端和服务器在同一台机器/ VM上:
结果的HTTP(” ab -n 10000 http://ubuntu904/index.html
“)
结果HTTPS(” ab -n 10000 https://ubuntu904/index.html
“):
如果仔细研究单个请求的tcp / ip通信(例如,使用tcpdump或wireshark),您会发现http情况要求客户端和服务器之间有10个数据包,而https需要16:16的延迟要比https高。(更多关于延迟的重要性在这里)
在测试中添加keep-alive(ab
option -k
)可以改善这种情况,因为现在所有请求都共享相同的连接,即SSL开销较低-但是https的测量速度仍然较慢:
结果HTTP与保活(” ab -k -n 10000 http://ubuntu904/index.html
“)
具有保持活动状态(“ ”)的https的结果ab -k -n 10000 https://ubuntu904/index.html
:
结论:
在现代服务器上,我会说您的瓶颈将是网络和应用程序,而不是加密。apache中的TLS / SSL将使用相当优化的C语言编写,因此与PHP代码相比是相形见,,尤其是当您要进行数据库访问之类的操作时。提供静态文件可能会产生更大的影响,因为加密将成为整个过程中更大的一部分。我无法提供任何具体数字,但是如果它超过5%并可能接近百分之几,我会感到惊讶。
我可以确认,与包括的每个其他元素(脚本,网络等)相比,加密所增加的负载非常小
根据我的经验,一般规则与您的公共密钥的大小(例如2048、4096、8192)直接相关。但是,我几乎不会注意到台式机环境中的差异,但是在移动设备上您会看到差异,因为它需要计算能力。
通常,这是不幸的,但是SSL一直而且很可能总是会带来巨大的性能损失。