J'ai acheté et mis en place un certificat SSL sur mon site Web, qui semble se charger beaucoup plus lentement qu'auparavant.
Pourquoi cela se produit-il et comment peut-il être corrigé?
C'est une question qui pourrait être trop large pour cette plate-forme. Il est vrai que le chiffrement entraîne une surcharge de calcul, mais avec la bonne configuration, il peut être négligeable.
Cette vidéo à partir de la mi-2014 explique beaucoup de choses sur les problèmes courants et les mythes concernant la mise en œuvre de TLS, et explique pourquoi cela peut être lent et pourquoi cela ne devrait pas.
Ma suggestion est la suivante: configurez-vous avec une commande Nice top
sur le shell et demandez des pages à votre serveur. Regardez la performance et quels programmes l'utilisent. Vous pouvez également installer des outils tels que Firebug (pour Mozilla Firefox) et consulter les requêtes effectuées par un client se connectant à votre serveur.
Cela pourrait également être un problème d’hébergement partagé, si tel est votre cas. Dans ce cas, le problème pourrait être hors de votre portée.
Le cryptage de toutes les données ajoute un peu de temps de calcul, mais sur un serveur décent, ce n'est pas un problème.
Ce qui est vraiment ennuyeux avec TLS, c'est que la connexion initiale prend beaucoup de temps. Vous pensez peut-être qu'envoyer une requête est aussi simple que d'envoyer un seul paquet au serveur et d'attendre la réponse, mais ce n'est pas le cas:
Le client doit d’abord établir une connexion TCP au serveur (cela s’applique également à http normal), puis le client reçoit une réponse du serveur indiquant que la connexion a été acceptée. 1 aller-retour (envoi d'un paquet au serveur et attente d'une réponse.)
Ensuite, le client doit communiquer avec le serveur pour établir une connexion TLS sécurisée. Cela implique d'envoyer beaucoup plus de petits paquets dans les deux sens. La poignée de main TLS est plus longue que la poignée de main TCP: 2 allers-retours et des calculs serrés.
À l'aide de la connexion TLS, le client envoie la demande au serveur et reçoit une réponse. 1 aller-retour + générer la réponse HTTP, ce qui peut prendre un certain temps.
L'établissement de la connexion initiale pour HTTPS nécessite deux fois plus d'allers-retours que pour HTTP simple et beaucoup plus de traitement sur le serveur.
Une charge importante sur le serveur ralentit l'augmentation des calculs.
Les clients situés loin du serveur pâtiront du temps de ping. Chaque aller-retour prend un temps de ping. Un simple HTTP prend seulement 2 pings, alors que HTTPS en prend 4.
Et pour aggraver les choses, si un visiteur entre votre nom de domaine ou votre adresse de domaine sans https: // devant lui dans son navigateur, il devra d'abord établir une connexion HTTP normale, puis se faire rediriger et établir une connexion HTTPS. .
Établissez TCP connexion au port 80
Envoyez une requête HTTP et recevez une redirection 301 vers la version https: //.
Établissez TCP connexion au port 443
Poignée de main TLS
Poignée de main TLS
Envoyez à nouveau la requête HTTP et attendez la réponse.
Cela prend 6 pings, quelques calculs, et une toute petite requête inutile.