0

クライアントが SPDY をサポートしているかどうかをサーバー側で検出するにはどうすればよいですか?

ウェブサイトをできるだけ高速にしたい。これが私の考えです: (注: 私の Web サイトは機密データを送信する必要はありません。) ブラウザーが HTTPS で Web サイトに接続しても SPDY をサポートしていない場合、それは無駄です。HTTPS による不要なオーバーヘッドはありませんか? 一方、ブラウザーが HTTP 経由で接続し、SPDY をサポートしている場合、それは機会を逃してしまいます。

NPN は、クライアントとサーバーが SPDY でネゴシエートするかどうかをネゴシエートするために使用するテクノロジのようです。これは、アプリケーション コードに到達する前に、Web サーバーで発生しますよね? 私が本当に必要としているのは、修正されたバージョンの NPN (それが本当に SPDY 以外のものであるかどうかさえわかりません) または mod_spdy であると思います。理想的には、そのようなバージョンには というオプションがありますuse_spdy_if_available_otherwise_redirect_to_http。:-)

ああ、これが十分に複雑でなければ、私は現在 Cloudflare の CDN サービスを使用しています。この点に関して、彼らがどのように動作するかを変更する手段がないと確信しているので、チャンスはありませんよね?

4

2 に答える 2

0

私は igrigorik のアドバイスに同意します: ユーザーを HTTPS から HTTP にリダイレクトしないでください。それはただクールではありません。とにかく、今日この検出の問題がありました。私の答えは以下のとおりです。

NGINX(私は1.7.7を実行しています)では、$spdyクライアントがSPDY接続で接続すると変数が設定されます。それ以外の場合、$spdy値はありません。たとえば、カスタム URL パラメーターを php スクリプトに渡しています。

server {
  listen 443 ssl spdy;
  ...
  ...

  # add SPDY rewrite param
  if ($spdy) {
    rewrite ^/detect-spdy.js /detect-spdy.js.php?spdy=$spdy last;
  }
  # fallback to non-SPDY rewrite
  rewrite ^/detect-spdy.js /detect-spdy.js.php last;

  # add response header if needed later 
  add_header x-spdy $spdy;
}
于 2014-11-30T09:14:07.877 に答える