質問
あの主要な性能の違いとはhttpおよびhttps?いうリコールの読みがHTTPSできる第てHTTP.ここで有効な現在の世代webservers/ブラウザ?その場合、ある白を支援です。
解決
これには非常に簡単な答えがあります。 Webサーバーのパフォーマンスをプロファイルして、特定の状況におけるパフォーマンスの低下を確認します。 いくつかのツールがありますHTTPサーバーとHTTPSサーバーのパフォーマンスを比較し(JMeterとVisual Studioが思い浮かぶ)、それらは非常に使いやすいです。
ウェブサイトの性質、ハードウェア、ソフトウェア、およびネットワーク構成に関する情報を一部なくして、誰もあなたに意味のある答えを与えることはできません。
他の人が言ったように、暗号化のためにある程度のオーバーヘッドがありますが、次のことに大きく依存しています。
- ハードウェア
- サーバーソフトウェア
- 動的コンテンツと静的コンテンツの比率
- クライアントからサーバーまでの距離
- 典型的なセッションの長さ
- ETC(私の個人的なお気に入り)
- クライアントのキャッシュ動作
私の経験では、暗号化に費やされる時間(SSLオーバーヘッド)はコンテンツ生成時間に比べて重要ではないため、動的コンテンツが多いサーバーはHTTPSによる影響が少ない傾向があります。
メモリに簡単にキャッシュできる静的ページのかなり小さなセットを提供するのが重いサーバーは、はるかに高いオーバーヘッドに悩まされます(「イントラネット」でスループットが急増しました)。
編集:いくつかの他の人によって提起された1つのポイントは、SSLハンドシェイクがHTTPSの主要なコストであることです。それが正しいので、「典型的なセッションの長さ」が理由です。および「クライアントのキャッシュ動作」重要です。
多くの非常に短いセッションは、ハンドシェイク時間が他のパフォーマンス要因を圧倒することを意味します。セッションが長くなると、セッションの開始時にハンドシェイクのコストが発生しますが、後続のリクエストのオーバーヘッドは比較的低くなります。
クライアントキャッシングは、大規模なプロキシサーバーから個々のブラウザキャッシュまで、いくつかのステップで実行できます。通常、HTTPSコンテンツは共有キャッシュにキャッシュされません(ただし、いくつかのプロキシサーバーは中間者タイプの動作を利用してこれを実現できます)。多くのブラウザは、現在のセッションのHTTPSコンテンツをキャッシュし、多くの場合セッションをまたいでキャッシュします。キャッシュを行わない、またはキャッシュを減らすことの影響は、クライアントが同じコンテンツをより頻繁に取得することを意味します。これにより、同じ数のユーザーにサービスを提供するためのリクエストと帯域幅が増えます。
他のヒント
HTTPSには最初のハンドシェイクが必要ですが、これには非常に時間がかかる場合があります。ハンドシェイクの一部として転送されるデータの実際の量はそれほど大きくありませんが(通常5 kB未満)、非常に小さなリクエストの場合、これはかなりのオーバーヘッドになる可能性があります。ただし、ハンドシェイクが完了すると、対称暗号化の非常に高速な形式が使用されるため、オーバーヘッドは最小限に抑えられます。結論:HTTPSを介した短いリクエストの多くはHTTPよりもかなり遅くなりますが、1つのリクエストで大量のデータを転送する場合、違いはわずかです。
ただし、HTTP / 1.1ではキープアライブがデフォルトの動作であるため、単一ハンドシェイクを実行してから、同じ接続を介して多くの要求を行います。これは、HTTPSに大きな違いをもたらします。おそらく確認するために(他の人が提案したように)サイトのプロファイルを作成する必要がありますが、パフォーマンスの違いは目立たないと思われます。
HTTPSが遅延をどのように増加させるかを本当に理解するには、HTTPS接続がどのように確立されるかを理解する必要があります。 素敵な図。重要なのは、クライアントが2つの「脚」の後にデータを取得する代わりに、 (1往復、要求を送信、サーバーが応答を送信)、クライアントは少なくとも4レッグ(2往復)までデータを取得しません。そのため、パケットがクライアントとサーバー間を移動するのに100ミリ秒かかる場合、最初のHTTPS要求には少なくとも500ミリ秒かかります。
もちろん、これはHTTPS接続を再利用することで緩和できますが(ブラウザーが実行する必要があります)、HTTPS Webサイトをロードする際の初期失速の一部を説明します。
オーバーヘッドは暗号化によるものではありません。最新のCPUでは、SSLに必要な暗号化は簡単です。
オーバーヘッドはSSLハンドシェイクが原因であり、これは長く、HTTPセッションよりもHTTPSセッションに必要な往復回数が大幅に増加します。
(Firebugなどのツールを使用して)サーバーがシミュレートされた高遅延リンクの終端にある間にページの読み込み時間を測定します。高遅延リンクをシミュレートするツールが存在します-Linuxには「netem」があります。同じ設定でHTTPとHTTPSを比較します。
遅延は次の方法である程度緩和できます。
- サーバーがHTTPキープアライブを使用していることを確認します-これにより、クライアントがSSLセッションを再利用できるようになり、別のハンドシェイクの必要がなくなります
- 可能な限りリソースを組み合わせて(たとえば、.jsインクルードファイル、CSS)、クライアント側のキャッシュを促進することにより、リクエストの数をできる限り少なくします
- ページの読み込み回数を減らします。必要のないデータをページ(おそらく非表示のHTML要素)にロードし、クライアントスクリプトを使用して表示します。
月2014更新
簡単に試験との違いはHTTPおよびHTTPSの性能を自分のブラウザを利用 HTTP vs HTTPS試験 webサイト AnthumChris:"このページ対策、その負荷時間unsecure HTTP、HTTPS暗号化された接続します。両方のページ負荷360、非キャッシュされた画像(2.04MB)"
その結果の場合にはびっくりします。
をたてることが重要であるが、最新の知識をHTTPS性能が ましょう暗号化 証明書発行局が開発、自動化、SSLの証明書を2015年の夏には、Mozilla、Akamai、Cisco、電子フロンティア財団、IdenTrust.
月2015更新
更新しましょう暗号化-来月2015年:
- ましょう暗号化の発売予定 月16日2015年)
- ましょう暗号化ルートと中間証明書 月4日、2015年)
- 案しましょう暗号化の契約合意 (月21日-2015年度)
詳細情報をTwitter: @letsencrypt
詳細はHTTPSおよびSSL/TLSの性能参照:
のための詳細情報の重要性にHTTPSを使用してい
- なぜHTTPS用できません。 (HTTPSのみ標準)
- ましょう暗号化 (インターネットセキュリティ研究グループ)
- HTTPSも (電子フロンティア財団)
るでしょうが、見積もり イリヤ-Grigorik: "TLSはちょうど一性の問題:で広く使用されます。あとは可能で最適化されています。"
感謝 クリス 著の HTTP vs HTTPS試験 ベンチマーク-氏のコメントします。
現在のトップアンサーは完全には正しくありません。
他の人がここで指摘したように、httpsはハンドシェークを必要とするため、より多くのTCP / IPラウンドトリップを行います。
通常、WAN環境では、サーバー上のCPU使用率の増加ではなく、待ち時間が制限要因になります。
ヨーロッパから米国への遅延は約200ミリ秒(往復時間)になる可能性があることに注意してください。
HTTPWatch を使用して、これを簡単に測定できます(単一ユーザーの場合)。
これまでに述べたすべてに加えて、一部の(すべて?)Webブラウザーは、セキュリティ上の理由からローカルハードドライブにHTTPS経由で取得したキャッシュコンテンツを保存しないことに注意してください。これは、ブラウザの再起動後、ユーザーの観点から見た場合、静的コンテンツを多く含むページの読み込みが遅くなり、サーバーの観点から、HTTPS経由の静的コンテンツに対するリクエストの量がHTTP経由の場合よりも多くなることを意味します。
これに対する単一の答えはありません。
暗号化は常により多くのCPUを消費します。これは多くの場合専用ハードウェアにオフロードでき、コストは選択したアルゴリズムによって異なります。たとえば、3desはAESよりも高価です。暗号化者にとっては、解読者よりも高価なアルゴリズムもあります。反対のコストがかかるものもあります。
バルク暗号よりも高価なのは、ハンドシェイクのコストです。新しい接続はより多くのCPUを消費します。これは、セッションの再開により削減できますが、古いセッションシークレットは有効期限が切れるまで保持されます。これは、クライアントからの小さなリクエストがそれ以上戻ってこない場合が最も高価であることを意味します。
クロスインターネットトラフィックの場合、利用可能な帯域幅が低すぎるため、データレートにこのコストが気付かない場合があります。ただし、ビジー状態のサーバーでのCPU使用率に間違いなく気付くでしょう。
(ダイヤルアップユーザーとして)SSLを介した同じページは、通常のHTTPを使用した場合よりも数倍遅いことを伝えることができます...
多くの場合、SSLハンドシェイクのパフォーマンスへの影響は、SSLセッションを両端(デスクトップとサーバー)でキャッシュできるため緩和されます。たとえば、Windowsマシンでは、SSLセッションを最大10時間キャッシュできます。 http://support.microsoft.com/kb/247658/EN-US。一部のSSLアクセラレータには、セッションがキャッシュされる時間を調整できるパラメーターもあります。
考慮すべきもう1つの影響は、HTTPS経由で配信される静的コンテンツがプロキシによってキャッシュされないことです。これにより、同じプロキシを介してサイトにアクセスする複数のユーザーのパフォーマンスが低下する可能性があります。これは、静的コンテンツもデスクトップにキャッシュされるという事実によって緩和できます。InternetExplorerバージョン6および7は、特に指示がない限り、キャッシュ可能なHTTPS静的コンテンツをキャッシュします([ツール]メニュー/インターネットオプション/詳細設定/セキュリティ/暗号化されたページを保存しない)ディスクへ)。
小さな実験を行って、flickr(233 kb)から同じ画像の時間差を16%取得しました:
http://farm8.staticflickr.com/7405/13368635263_d792fc1189_b.jpg
https://farm8.staticflickr.com/7405/13368635263_d792fc1189_b.jpg
これらの数値は、コンピューターのパフォーマンス、接続速度、サーバーの負荷、パス(ブラウザーからサーバーへの特定のネットワークパス)のQoSなどの多くの要因に依存しますが、HTTPSはHTTPよりも遅い、より多くの操作を完了する必要があるため(SSLハンドシェークおよびデータのエンコード/デコード)。
これは、SSLハンドシェイク遅延に関する素晴らしい記事です(少し古いですが、まだ素晴らしいです)。低速のインターネット接続を介してアプリを使用しているクライアントの速度低下の主な原因としてSSLを特定できました。
プロジェクトで同じ問題を調査しているので、これらのスライドを見つけました。古いが興味深い:
http://www.cs.nyu.edu/ artg / research / comparison / comparison_slides / sld001.htm
ここに厄介なエッジケースがあるようです:Ajax over congested wifi。
Ajaxは通常、キープアライブが約20秒後にタイムアウトしたことを意味します。ただし、wifiは(理想的には高速な)Ajax接続が複数の往復を行う必要があることを意味します。さらに悪いことに、wifiはしばしばパケットを失い、TCPが再送信されます。この場合、HTTPSのパフォーマンスは非常に悪くなります!
HTTPとHTTPSのパフォーマンスの比較
以前のプレーンなHTTPと比較した場合、HTTPSは常にページの読み込み時間が遅いと関連付けていました。 Web開発者として、Webページのパフォーマンスは私にとって重要であり、Webページのパフォーマンスを低下させるものは何でもありません。
関連するパフォーマンスへの影響を理解するために、以下の図は、HTTPSを使用してリソースのリクエストを行うと内部で何が起こるかについての基本的な考え方を示しています。
上の図からわかるように、プレーンHTTPを使用する場合と比較して、HTTPSを使用する場合に実行する必要があるいくつかの追加手順があります。 HTTPSを使用してリクエストを行う場合、リクエストの信頼性を確認するためにハンドシェイクを行う必要があります。このハンドシェイクは、HTTPリクエストと比較すると追加のステップであり、残念ながらオーバーヘッドが発生します。
パフォーマンスへの影響を理解し、パフォーマンスへの影響が大きいかどうかを自分で確認するために、このサイトをテストプラットフォームとして使用しました。 webpagetest.orgに行き、視覚比較ツールを使用して、HTTPSとHTTPを使用してこのサイトの読み込みを比較しました。
からご覧いただけますHTTPSを使用した結果はページの読み込み時間に影響を与えましたが、その差は無視でき、300ミリ秒の差にしか気づきませんでした。これらの時間は、コンピューターのパフォーマンス、接続速度、サーバーの負荷、サーバーからの距離などの多くの要因に依存することに注意することが重要です。
サイトは異なる場合があります。サイトを徹底的にテストし、HTTPSへの切り替えに伴うパフォーマンスへの影響を確認することが重要です。
パフォーマンスを改善できますか? こちらをご覧ください詳細情報を取得する
これを測定する方法があります。 jmeterと呼ばれるApacheのツールは、スループットを測定します。 SSLの有無にかかわらず、制御された環境でjmeterを使用してサービスの大規模なサンプリングを設定した場合、相対コストの正確な比較を取得する必要があります。あなたの結果に興味があります。
HTTPSには暗号化/復号化のオーバーヘッドがあるため、常に少し遅くなります。 SSL終了は非常にCPUを集中的に使用します。 SSLをオフロードするデバイスがある場合、レイテンシーの違いは、サーバーが受ける負荷によってほとんど気付かない場合があります。
より重要なパフォーマンスの違いは、ユーザーが接続している間はHTTPSセッションが開いていることです。 HTTPの「セッション」は、単一のアイテムリクエストに対してのみ有効です。
多数の同時ユーザーがいるサイトを運営している場合、大量のメモリを購入することを期待してください。
SSLには非SLL HTTPでは必要ない追加の暗号化ステップが必要であることを考えると、これはほぼ間違いなく当てはまります。
ブラウザは、HTTPまたはHTTPSを使用したHTTP / 1.1プロトコルを受け入れますが、ブラウザはHTTPSを使用したHTTP / 2.0プロトコルしか処理できません。 HTTP / 1.1からHTTP / 2.0へのプロトコルの違いにより、HTTP / 2.0は平均でHTTP / 1.1より4〜5倍高速になります。また、HTTPSを実装しているサイトのほとんどは、HTTP / 2.0プロトコルを介して実装しています。そのため、HTTPSは、通常使用するプロトコルが異なるため、ほとんど常にHTTPよりも高速になります。ただし、HTTP / HTTP / 1.1とHTTPS / HTTP / 1.1を比較すると、HTTPは平均してHTTPSよりもわずかに高速です。
Chromeを使用して実行した比較(Ver。64):
HTTPS over HTTP / 1.1:
- 0.47秒の平均ページ読み込み時間
- HTTP over HTTP / 1.1より0.05秒遅い
- HTTP / 2.0上のHTTPSより0.37秒遅い
HTTP over HTTP / 1.1
- 0.42秒の平均ページ読み込み時間
- HTTP / HTTP経由のHTTPSよりも0.05秒速い
- HTTP / HTTP経由のHTTPSより0.32秒遅い
HTTPS over HTTP / 2.0
- 0.10秒の平均読み込み時間
- HTTP over HTTP / 1.1より0.32秒高速
- HTTPS over HTTPS / 1.1より0.37秒速い