2012-04-11 9 views
7

StackExchange MiniProfilerは、すでにv1.7.1のjQueryを参照しているASP.NET WebFormsページに実装されています。私は、生成される出力のソースを表示するとき、私はdev内みると、このMiniProfilerがjquery-1.7.1をロードしても、なぜページにロードしたのですか?

<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script> 
<script type="text/javascript">  
    ... 
    load('/app/mini-profiler-resources/jquery.1.7.1.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA=', initMp); 
</script> 

に似た何かを得る、しかし

<script src="Scripts/jquery-1.7.1.min.js" type="text/javascript"></script> 
<%= MiniProfiler.RenderIncludes() %> 

:私のマスターファイルは次のようになりますので、jQueryのファイルは、ローカルでホストされていますツールのネットワークタブをクリックすると、2つのリクエストがあります.1つはScripts/jquery-1.7.1.min.js、もう1つは/app/mini-profiler-resources/jquery.1.7.1.jsです。

これはかなり冗長性の問題ではありませんか? MiniProfiler includesがjQueryライブラリの別のコピーをリクエスト、ダウンロード、解析するのを止めるにはどうしたらいいですか?

答えて

10

理由は、我々はnoConflictでのjQueryをロードしていることです。これにより、jQueryのバージョンが衝突する危険性が排除されます。たとえば、jQueryバージョン1.0がページにある場合、MiniProfilerが動作するかどうかはわかりません。リスクを回避するため、私たちは独自のバージョンをロードします。

「正しい」バージョンがある場合は、jQueryMPからjQueryへのエイリアスが簡単な場合は、jQueryのバージョンチェックをリクエストする前にプルリクエストを開いています。しかし、これはコードを複雑にし、jQueryの単一バージョンの問題のみを解決します。

+2

ありがとうございます。 'RenderIncludes()'メソッドのデフォルトの 'bool = true'引数を含めてjQueryのロードを選択する価値はありますか?ページの他の場所で正しいバージョンをロードしていることを知っていたユーザーは、 'RenderIncludes(false)'を呼び出すことができます。これが実行可能なアプローチだと思うならば、足取りをするのが楽しいです。 – growse

+3

これはおそらくRenderIncludes(useExistingjQuery:true)です。これは、ロードする代わりに 'jQueryMP = jQuery;'を生成することができます –

+1

最新バージョンでは、次のようにします:StackExchange.Profiling.MiniProfiler.Settings.UseExistingjQuery = true; – pbz

0

異なるURLを持つため、ブラウザのリソースが異なります。たぶん、追加した最初のスクリプトは必要ありません。

またはこのハックを試してみてください。

<script src="/app/mini-profiler-resources/jquery.1.7.1.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA="></script> 
+0

私はブラウザが両方のスクリプトをロードしているのか尋ねていませんが、MiniProfilerの自動生成コードが、既に読み込まれているスクリプトをロードすることを決定しています。 – growse

+0

私の2番目の文を読んでください:remove: Gavriel

+1

そして、jQueryに依存するスクリプトは、MiniProfiler isnレンダリングされませんか? – growse

関連する問題