ワイルドカードドメインを使用して、HTTP ブロックなしで画像を提供する

ワイルドカードドメインを使用して、HTTP ブロックなしで画像を提供する

ブラウザが同じホストからの複数の画像を待機するとブロックされることがあると読み、ページの読み込み時間を短縮するためにできる限りのことをしようとしています。

注意点が 1 つあります。HTTPS 経由でファイルを提供する必要があります。

これが実現可能かどうかについてのご意見:

  1. *.domain.com のワイルドカード証明書を設定します。
  2. 画像が必要なときはいつでも、ファイル名のハッシュ mod 5 に基づいて番号を生成し、それを 'img' サブドメインに追加します (例: img1.domain.com、img4.domain.com、img3.domain.com など)。ハッシュにより、どのファイル名でも常に同じサブドメインが使用されるため、ブラウザは画像をキャッシュできるようになります。
  3. すべての img#. サブドメインを /var/www/img にポイントするように動的仮想ホスト レコードを設定します。

この計画についてのフィードバックをお待ちしています。私の懸念は次のとおりです。

  1. ページに複数のサブドメインへの https:// リンクがある場合、警告が表示されますか?
  2. 私が話している動的仮想ホスト レコードは可能でしょうか?
  3. これに要する処理量を考えると、全体的に何らかのメリットが得られる可能性はあるでしょうか? おそらく、1 ページあたり平均 6 枚の画像があり、ページを更新するたびにその半分だけが変更されることになります。

フィードバックをよろしくお願いします。

答え1

ウェブ サーバーを指すワイルドカード DNS エントリがあり、すべての可能なホストで応答するように構成されていて、ワイルドカード SSL 証明書がある場合、このスキームは可能です。ただし、いくつか問題があるようです。

  1. 各画像を異なるホスト名に配置すると、ページの読み込みに必要な DNS ルックアップの数が増えます。
  2. 異なるホスト名に配置すると、ブラウザが複数の画像に対して既存の TCP 接続を再利用できなくなります。TCP 接続を確立するのは「コストがかかる」ため、画像が同じホスト名の下にある場合に確立されて再利用される少数の接続ではなく、各画像に対して確立された接続が必要になります。

一般的に、サービス イメージの推奨プラクティスは次のとおりです。

  1. メイン ドメインとは異なるホスト名から画像を読み込みますが、他のホスト名は 1 つまたは 2 つに限定します (上記の理由により)。
  2. これらのホスト名で Cookie が使用されていないことを確認します (ブラウザがリクエストとともに Cookie を送信する必要がなくなります)。
  3. これらのホスト名で提供されるコンテンツに対してキャッシュが有効になっていることを確認します (ただし、SSL には通常適用されません)。
  4. 画像を組み合わせ、可能な場合は CSS スプライトを使用します。
  5. 他にもたくさん文書化された 他の場所

答え2

  1. いいえ、すべてが SSL で証明書が有効であれば、問題は発生しません。
  2. はい、少なくともApacheでは1行設定するだけですServerAlias *.domain.com
  3. 現状ではそうではありません。

より適切な解決策:

軽量サーバー (例: 異なるドメインで、重いモジュール (軽量プロセス) がロードされていない lighttpd) を使用し、適切な設定でサーバーごとに 1 つだけ使用します。または、nginx をサーバーとして使用するとさらに効果的です。これにより、次のことが可能になります。

  1. 異なるドメイン/ポート/証明書は必要ありません。
  2. nginxは静的コンテンツを提供し、元のより重いサーバーへの「動的」リクエストのリバースプロキシサーバーとして機能します。このサーバーは、別のポート/IPまたは別のサーバーでローカルに実行されます。
  3. nginx で適切な設定 (keepalive、workers など) を設定します。
  4. HTTPSの提供に問題はありません

関連情報