8

何が速いですか?絶対 URIへのホット リンク (インライン リンク)か、自分でリソースをホストし、相対 URIを使用しますか?

Internet Explorer で HTML5 要素のスタイルを設定する方法に関する彼のチュートリアルで、Remy Sharp は、ホット リンクが「余分な HTTP [GET] 要求」を引き起こすと述べています。ホット リンクとスクリプトの HTML へのコピー アンド ペースト (埋め込み) を比較している場合は同意します。しかし、スクリプトをローカルにホストし、相対パスを介してリンクする場合とホット リンクを比較する場合、ブラウザが絶対パスを解決する必要がないため、実際にはホット リンクの方が (非常にわずかに) 高速であると私は主張します。相対パスからの URL。ただし、どちらの場合も、余分な HTTP GET リクエストが実行されますね。

4

5 に答える 5

11

正解は、場合によって異なります。

ホットリンクが遅くなる理由は -

  1. 追加の DNS ルックアップが必要です
  2. 既存の TCP/IP ソケット接続を再利用できません

サーバーでのホスティングは、次の理由で遅くなる可能性があります -

  1. ブラウザーは、ホストごとに n 個の同時要求のみを許可します。同じホストに対してもう 1 つの要求があると、キューイングが発生する可能性があり、これは遅くなる可能性があります。数字「n」はブラウザー固有で、2 から 6 の間です。browserscope > network > connections per host name を参照してください

両方のサーバーがあらゆる点で同一であると仮定すると、サーバーでのホスティングはより高速になると思います. これは特に、ホストあたりの接続数が 6 である新しいブラウザーに当てはまります。

しかし悲しいことに、物事はそれほど単純ではありません。次の場合にのみホットリンクを使用することをお勧めします -

  1. ドメインのリソース (images/js) が多すぎます
  2. もう 1 つのサーバーは CDN であり、リソースは十分に人気があるため、ブラウザーのキャッシュに存在する可能性は十分にあります。Google のサーバー上の JQuery を考えてみてください。

他のすべてのユース ケースでは、独自のサーバーでホスティングする方が適切です。

于 2011-03-01T18:43:37.510 に答える
2

これは、http 自体ではなく、tcp のような低レベルのものと関係があります。現在、同じ Web サーバーから 2 つのアイテムを取得すると、ブラウザーはそれらを同じ TCP 接続でプルする可能性があります。これは、1 つの TCP 接続を介した 2 つの http トランザクションです。これにより、別の tcp 接続を作成するオーバーヘッドが回避されます。このオーバーヘッドはトラフィックに関しては小さいですが、多くの遅延が発生する可能性があります。

OTOH、それぞれが異なるサーバーに移動する2つのhttpトランザクションを実行すると、より高速になるか、そうでない可能性があります。確かに、2 つの TCP 接続のオーバーヘッドがあります。この場合、それらシリアル化されます。2 番目が開始する前に、1 つが完了する必要があります。ただし、多くのオブジェクトをプルダウンしている場合、2 番目、3 番目、4 番目… の接続がすべて並行して進行し、遅延の問題が隠される可能性があります。このシナリオでは、小さなオブジェクトが ISP の帯域幅制限の影響を受けない可能性があるため、処理が大幅に速くなる可能性があります。

水は確かに濁っています。

遅延と帯域幅に注意してください。リソースの数とサイズに大きく依存します。

于 2011-03-01T18:27:16.727 に答える
2

クライアントが相対 URI を解決するために必要な時間は、ごくわずかです。

したがって、絶対または相対 URI を使用してドキュメントの同じドメイン内のリソースにリンクしても、違いはありません。

唯一の違いは、リソースが別のサーバーでホストされている場合です。次に、そのサーバーへの追加の TCP 接続が必要になりますが、既に接続しているサーバーへの追加の HTTP 要求は、その接続を使用できます。

于 2011-03-01T18:46:43.877 に答える
0

このような状況に影響を与える唯一のものは、問題のサーバーの相対速度 (速度) と、このコードが他のサイトで実行されることを期待するかどうか (保守性) だけだと思います。

于 2011-03-01T18:08:44.560 に答える
0

リソースが HTML ドキュメント自体に埋め込まれておらず (リンクされている)、リソースが同じホスト名の同じサーバー上にあると仮定すると、絶対または相対 URI を介してリソースを取得する時間は実質的に同じになります。どちらの方法でも、追加の HTTP 要求が送信されます。「実質的に同一」を分割したい場合は、解析する必要があるHTMLの量が少ないため、相対パスが非常に、非常に、非常にわずかに速くなる傾向があります。パスの解析(前述のとおり)は潜在的により高速です (文字列トークナイザーがアドレスのドメイン部分を処理する必要がない/アドレスが短いため)。ここでの違いは、好奇心のために現実的なものにすぎません..サイトがこのレベルまで最適化されているとは想像できません(ただし、それは良い経験則を確立するかもしれませんか?相対パスを使用すると、サイトのドメイン/パスを自由に変更でき、含まれるすべての URI を書き換える必要はありません..)

考慮すべきことの 1 つは、リソースが同じサーバーでホストされておらず、参照している HTML ドキュメントのサーバーで KeepAlive が有効になっている場合、別の TCP 接続を初期化して 2 番目のサーバー (および DNS クエリ) に接続する必要があることです。アクセスが IP アドレス経由ではないと仮定すると、他のサーバーのホスト名を解決するように作成されます)、同じサーバー上の複数の参照リソースと比較して追加のオーバーヘッドが発生します (既存の TCP 接続内で GET 要求が発行される場合)。

KeepAlive が有効になっていないサーバーにも同じことが当てはまります。要求されたリソースごとに TCP 接続が初期化されます。

于 2011-03-01T18:21:50.673 に答える