10

Web サーバーでユーザー エージェント検出を使用して、クライアントに送信する JavaScript リソースのバージョンを決定することの長所と短所に興味があります。

特に、ある機能をネイティブでサポートしている Web ブラウザーと、詳細な JavaScript 回避策が必要な Web ブラウザーがある場合、すべての人に回避策を提供し、クライアント側で必要な場合にのみ実行するか、必要なブラウザーにのみ回避策を提供する方がよいでしょうか。ネイティブ機能の薄いラッパーを残りに送信しますか?

この 2 番目のアプローチでは、どのような問題が発生する可能性がありますか? また、サポートしているブラウザーの応答が小さいという利点よりも優先されるのでしょうか?

4

4 に答える 4

3

You could load "optional" stuff on demand using RequireJS (or similar).

1) On Page load... test for feature with small tests (Modernizr)

2) If test succeeds, use native, if fails, use RequireJS to load your other resources

3) Profit.

This does assume you don't mind extra http requests....too many of these test, load, repeat processes can slow things down more than just including one large(r) file, so it's case dependent, but there is definitely reasonable middle ground...

于 2012-10-24T17:51:36.010 に答える
2

通常、JavaScript の 1 つのコピーをすべてのクライアントに送信し、JavaScript 自体に機能検出を実行させて、各ブラウザーの最適な処理方法を決定することをお勧めします。これには次の利点があります。

  1. 機能の検出は、ブラウザーの検出よりもはるかに正確で、前方互換性があり、これまでに見たことのないブラウザーでも使用できます。
  2. すべてのブラウザーに対して JavaScript のコピーを 1 つ取得します。これは、通常、テストとデプロイがはるかに簡単で、サーバー側の配布ロジックを必要としません。
  3. クライアントの条件に適応する 1 つの共通の JavaScript のセットを開発することは、通常、サイトの JavaScript の N 個の個別のバージョンを開発するよりもはるかに簡単です。
于 2012-10-24T18:00:17.970 に答える
1

これは賛否両論ではありませんが、SEO の観点から言えば、Googlebot には常に「回避策」のバージョンが表示されることを考慮する必要があります。(User-Agent が認識されなかったときのデフォルトだと思います)

ユーザー エージェント/Cookie ベースのカスタム JS ルールを実装するときに、いくつかのサイトが急降下するのを見たので、ここで言っています。

元の質問に戻ると、単一バージョンのアプローチを使用することをお勧めします。これは、はるかに管理しやすく、スクリプトの複数のバージョンを追跡する必要がないためです。

@BLSully は、これが引き起こす余分な HTTP リクエストについて、ここ (+1) で優れた点も提起しました。サイト全体の速度が急落するか、速度が大幅に低下する可能性があります。

高速化のためにできることはたくさんあります - これが本当にあなたの目標であるなら...

于 2012-10-25T13:00:35.550 に答える