7

すでにjQueryのv1.7.1を参照しているASP.NETWebFormsページにStackExchangeMiniProfilerを実装しました。jQueryファイルはローカルでホストされているため、マスターファイルは次のようになります。

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

ただし、生成された出力のソースを表示すると、次のようなものが得られます

<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>

開発ツールの[ネットワーク]タブを見ると、2つのリクエストが送信されていることがわかりますScripts/jquery-1.7.1.min.js/app/mini-profiler-resources/jquery.1.7.1.js

これはかなり大きな冗長性の問題ではありませんか?MiniProfiler includeがjQueryライブラリの別のコピーを要求、ダウンロード、および解析するのを停止するにはどうすればよいですか?

4

2 に答える 2

10

その理由は、noConflict で jQuery をロードしているためです。これにより、jQuery のバージョンが競合するリスクがなくなります。たとえば、jQuery バージョン 1.0 がページにある場合、MiniProfiler がまだ機能するかどうかはわかりません。リスクを回避するために、独自のバージョンをロードします。

現在、リクエストする前に jQuery のバージョン チェックを行うプル リクエストを受け付けています。「適切な」バージョンが存在する場合は、単純に にエイリアスできjQueryMPますjQuery。ただし、これによりコードが複雑になり、単一バージョンの jQuery の問題のみが解決されます。

于 2012-04-11T23:45:51.413 に答える
0

URL が異なるため、ブラウザのリソースが異なります。追加した最初のスクリプトが必要ないだけかもしれません。

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

<script src="/app/mini-profiler-resources/jquery.1.7.1.js?v=tNlJPuyuHLy/d5LQjyDuRbWKa0weCpmO3xkO6MH4TtA="></script>
于 2012-04-11T11:48:10.197 に答える