7

我已经在已经引用 v1.7.1 的 jQuery 的 ASP.NET WebForms 页面上实现了 StackExchange MiniProfiler。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>

查看开发工具网络选项卡,我可以看到它正在输入两个请求,一个为Scripts/jquery-1.7.1.min.js,另一个为/app/mini-profiler-resources/jquery.1.7.1.js

这不是一个相当大的冗余问题吗?如何阻止 MiniProfiler 包含请求、下载和解析 jQuery 库的另一个副本?

4

2 回答 2

10

原因是我们在 noConflict 中加载 jQuery。这消除了 jQuery 版本冲突的风险。例如,如果页面上有 jQuery 版本 1.0,我们不确定 MiniProfiler 是否仍然可以工作。为了避免任何风险,我们加载了我们自己的版本。

现在,我对一个拉取请求持开放态度,该请求在请求之前对 jQuery 进行版本检查,如果存在“正确”版本,我们可以简单地别名jQueryMPjQuery. 但是,这会使代码复杂化,并且只能解决单个版本的 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 回答