HTTPS requires an initial “handshake” to create a connection between the browser and the server, and this handshake
can be be very slow.
The problem
It takes at least four TCP roundtrips just to open a single SSL connection between the client and the server — and this doesn’t happen until
after the initial TCP connection has been set up. The 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.
Important to know: The SSL handshake is actually even more process intensive than the actual data encryption that happens over the connection after the handshake is successfully complete.
How to know if this problem affects you
No one can give you a meaningful answer to this question without some information about the nature of your web site, hardware, software, and network configuration.
There are a couple of ways to look into this problem for your own site:
1. Profile the performance of your web server. There are several tools out there (such as
JMeter and
Visual Studio) to compare the performance of an HTTP vs HTTPS server.
2. Run
WebPagetests of key secure pages on your site. Look at the purple bars on the waterfall chart that indicate SSL negotiation. You don’t want to see:
- too many purple bars
- long purple bars
- purple bars associated with non-essential page resources