4

jqueryのgetScriptを使用するかどうか疑問に思いました。

サイトに含める必要のあるjQueryプラグインがありますが、どうすればよいかわからないため、これらのアプローチに違いがあるかどうか疑問に思っています。

私の場合、かなり大きなスクリプトを含める必要がありますが、IEブラウザー専用です。現時点では、次のようにしています。

if($.browser.msie){
 //minifed code
}

今、私はこれかどうか疑問に思っていました:

if($.browser.msie){
 $.getScript('link to minified script');
}

何か長所/短所がありますか?またはそれが多かれ少なかれ同じものである場合はどうなりますか?

4

6 に答える 6

3

使用する方が良いです:

if($.browser.msie){
 //minifed code
}

.getScript()ファイルをキャッシュしないためです。

于 2012-08-28T08:41:40.707 に答える
2

外部スクリプトを取得することには不利な点があります。

つまり 、1つのHTTPリクエスト

if($.browser.msie){
 //minifed code
}

2つのHTTPリクエスト

 if($.browser.msie){
 $.getScript('link to minified script');
}

お使いのブラウザは、通常、一度に2つのhttpリクエストにしか対応できません。したがって、パフォーマンスの観点からは、最初の方が高速になります。

さらなる説明

を使用するとgetScript、IEユーザーのリクエストは小さくなります(-「縮小されたコード」のサイズ)。ただし、他のすべてのユーザーは、毎回外部スクリプトをダウンロードする必要があります(+外部スクリプトのサイズ*ページリクエストの数)+余分なHTTPリクエストによる応答の遅延。

縮小されたコードを使用すると、誰もが縮小されたコードのサイズ(+縮小されたコードサイズ)をダウンロードする必要があります。

ミニフィードコードが5Kであり、10回アクセスされると仮定すると、次のようになります。

IE GetScript:

(5K * 10)+2番目のHTTPリクエストを使用したパフォーマンス=50K +

非IE

0

////////////////////////////////////////////////// //////

IE nonGetScript

5K

非IE

5K

于 2012-08-28T08:43:52.460 に答える
1

両方のアプローチには違いがあります。埋め込む最初のアプローチでは、ブラウザがそうでない場合でも、スクリプト全体がダウンロードされます。それはあなたのページのパフォーマンスのオーバーヘッドがロードするページサイズを増やします。

2番目のアプローチは、必要な場合にのみ、つまりブラウザーがIEの場合にのみ、外部jsファイルからスクリプトをロードする場合に適しています。したがって、他のブラウザの方がパフォーマンスが向上します。

また、スクリプトが非常に大きいとおっしゃいました。したがって、そのスクリプトを外部jsファイルに含める方がよいでしょう。これらのファイルはクライアントマシンにキャッシュされるため、パフォーマンスが向上します。何度もフェッチする必要はありません

于 2012-08-28T08:44:22.407 に答える
1

これらは2つのまったく異なるものです。あるケースでは、スクリプトがページに埋め込まれているため、すぐにアクセスでき、スクリプトが使用可能かどうかを確認するための追加のコードは必要ありません。ただし、2番目のケースでは、スクリプトを外部リソースとしてロードしているため、通信エラーやスクリプトエラーなどを処理する必要がある場合があります。

于 2012-08-28T08:41:08.110 に答える
0

したがって、少しドリルダウンする必要があるソースによると、 getScriptがスクリプトタグを追加していることがわかります。したがって、違いはありません。jQueryを開始し、スクリプト要素を追加するJavaScriptを処理するための(小さな)ビット以外の処理。大きな違いは、プログラムでスクリプトタグを挿入できるため、ブラウザテストのようなロジックを追加できることだと思います。

于 2012-08-28T08:39:47.300 に答える
0

スクリプトをファイルに埋め込む必要はありません。別のブラウザを使用しているユーザーは、スクリプトを取得しないでください。$.getScript$.ajaxwithdataType scriptの省略形であるため、スクリプトをロードして実行するだけです。

于 2012-08-28T08:40:39.740 に答える