web-dev-qa-db-fra.com

HTTPS VS Comparaison de vitesse HTTP

Mise à jour 2013-04-25:

C'est une question populaire qui attire la plus grande attention que cela devrait probablement. Afin d'arrêter la propagation de la désinformation, veuillez lire les paragraphes suivants et l'article d'accompagnement d'abord:

La vitesse ne doit pas être un facteur de décider d'utiliser HTTPS ou HTTP. Si vous Besoin https for tout Partie de votre site (connecteurs, enregistrement, cartes de crédit, etc.), Vous avez absolument besoin de https pour tout cela , tout le temps.

Veuillez lire SSL ne concerne pas le cryptage par Troy Hunt pour les raisons pour lesquelles.


Je suis considéré comme exécutant tout mon site Web de commerce électronique sous HTTPS. J'ai décidé d'exécuter un point de repère brut pour mesurer la durée de téléchargement d'une image de 156 ko via HTTPS VS HTTP, car j'avais lu que HTTPS est chargé de surcharge supplémentaire à partir du processus de cryptage.

La référence a été réalisée à l'aide de Firefox's Firebug simplement en transcrivant les horaires "en attente" et "recevant" (tous les autres temps sont 0) pour exceller du panneau NET lorsque vous téléchargez l'image à partir d'un cache vide.

Mes résultats étaient inattendus:

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

Observations [évidentes] de référence:

  • La réponse du serveur est plus rapide mais la durée de téléchargement est plus lente pour HTTPS que HTTP.
  • hTTPS est globalement plus rapide par une quantité importante (~ 10%).

Quelqu'un peut-il expliquer pourquoi cela se produirait?
[.____] Pensez-vous qu'un document (HTML, CSS, JavaScript) donnera des résultats différents?
[.____] Est-ce que quelqu'un a une meilleure méthode de téléchargement de benchmarking?





[Test de l'image supprimée]

Information additionnelle:

  • Le site Web est sur un compte d'hébergement partagé via Godaddy.com.
  • Si vous allez être si gentille comme pour diriger votre propre référence, n'addtrez pas le sous-domaine "www" ... J'utilise de toute façon la racine du contenu statique.
  • Utilise IIS7 en mode pipeline intégré.

Edition: référence pour 1px GIF (35 octets) ci-dessous:

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

Résultats: HTTPS est toujours plus rapide; Bien que trivialement dans ce cas.

Si quelqu'un voit une faille dans mon repère, laissez-moi savoir pour que je puisse poster de meilleurs résultats.

Ainsi, sur Godaddy, l'hébergement partagé vers 18h00 sur mon contenu de serveur spécifique servi via HTTPS est plus rapide que sur http.

37
David Murdoch

Si vous regardez votre temps HTTP, le temps d'attente plus grand et une durée de réception plus petite. HTTPS d'autre part a du temps d'attente plus petit et de plus grand temps de recevoir. J'interpréterais cela car le port HTTP sur le serveur d'hébergement partagé est plus occupé, une demande reste donc plus longue dans la file d'attente jusqu'à ce que le serveur soit accepté par le serveur. Une fois acceptée, les demandes sont transférées plus rapidement que HTTPS. Sur le port HTTPS, il y a moins de trafic sur le serveur afin que la demande soit gagnée plus rapidement mais prend plus de temps à transférer.

Pour toute comparaison HTTPS vs. HTTP, vous devez prendre en compte le plus grand temps pour piloter chaque demande de HTTPS par rapport à HTTP. Vous devriez voir s'agrandir lorsqu'il fait de nombreuses petites demandes.

19
Remus Rusanu

Vous voudrez peut-être également prendre en compte que les documents HTTPS ne seront presque jamais mis en cache nulle part, à l'exception du navigateur des utilisateurs. Vous constaterez donc que, même s'il y a peu de différence pour un utilisateur individuel, un document HTTP peut être significativement plus rapide pour un grand nombre de personnes partageant une cache. (Il est toujours assez courant dans certains endroits pour les FAI de mettre leurs clients via un cache proxy partagé)

Si c'est quelque chose que vous n'avez pas envie de partager les utilisateurs, bien sûr.

11
Colin Coghill

Je pense que les performances plus rapides que vous voyez sur HTTPS n'est pas une chance.

Notez deux choses sur vos résultats:

  1. HTTP est toujours plus rapide sur le premier résultat "total", mais plus lentement dans les totaux suivants.
  2. Les résultats HTTPS sont plus cohérents.

Les équilibreurs de charge modernes permettent généralement de compression pendant que SSL est utilisée pour faciliter la performance. Bien qu'il soit vrai que la poignée de main de la SSL initiale entraîne une latence substantielle, les mécanismes utilisés pour maintenir la session (la "poignée de main reprise" et le cryptage symétrique au lieu d'un cryptage asymétrique) n'ajoute que la latence négligeable. En conséquence, à moins que vos sessions soient courtes, vous obtenez plus de performances de la compression que vous perdez de la maintenance de la session.

La sagesse conventionnelle que SSL encourue une latence substantielle est obsolète (à moins que vos sessions soient assez courtes). Certains ingénieurs Google a écrit un article Expliquant comment certaines hypothèses antérieures sur SSL ne sont plus vraies.

5
Ryan

hTTPS fonctionne comme suit: Premièrement, une poignée de main à 4 voies est effectuée (au moins si je me souviens bien, il était 4way), voici le client et le serveur d'accord sur l'algorithme de chiffrement symétrique utilisé ultérieurement et échange des certificats (contenant des clés publiques).

Ils échangent une session (clé pour l'ENC symétrique ultérieurement) en utilisant PublicationKy Crypto.

Maintenant, ils envoient des messages cryptés avec la clé de session et de certains algorithmes de cryptage (3DES, AES, RC4, RC5, etc.). Étant donné que les cryptage symétriques ne sont pas des opérations coûteuses, les différences de temps de téléchargement ne sont pas si grandes.

Le fait que vous ayez moins Le temps d'attente est que vous avez probablement moins de trafic sur le port HTTP ou moins de trafic au moment où vous avez effectué la demande HTTP par rapport aux demandes HTTP.

Donc, pour optimiser les performances, vous devez utiliser comme quelques connexions HTTPS que possible depuis que la poignée de main est une procédure coûteuse relative.

2
Henri

Vous accédez à votre site via un proxy? Si tel est le cas, vous pouvez voir de meilleures performances car le proxy est ignoré ou réduit à l'utilisation d'une manipulation des demandes de connexion initiales.

Un proxy pourrait être en cours de contrôle et de mise en cache lorsque vous utilisez HTTP - conduisant à une performance réduite.

1
HttpWatchSupport