【问题标题】:MVC.Net Cdn calls fallback anywayMVC.Net Cdn 无论如何都会调用回退
【发布时间】:2015-02-14 23:53:23
【问题描述】:

我目前使用 MVC.Net 捆绑和缩小。当我加载呈现捆绑包的页面时(对于我的示例,我使用的是 JQuery 的),CDN 和回退都由浏览器请求,这向我的 Web 服务器发出 2 个请求。服务器预计每分钟会收到约 2000 次点击,所以如果我可以将我的脚本请求减少一半,那就太好了。所以我的问题是:为什么浏览器会请求回退,我该如何防止它?

这是我的BundleConfig

     BundleTable.EnableOptimizations = true;
     bundles.UseCdn = true;
     var bundle = new ScriptBundle("~/bundles/JQueryCore", "//ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js")
     {
        CdnFallbackExpression = "window.jquery"
     };

     bundle.Include("~/Scripts/JQuery/jquery-2.1.1.js");
     bundles.Add(bundle);

在我的.cshtml 中,我将我的脚本称为@Scripts.Render("~/bundles/JQueryCore")

生成的 html 如下所示:

<script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.1.min.js"></script>
<script>(window.jquery)||document.write('<script src="/bundles/JQueryCore"><\/script>');</script>

【问题讨论】:

    标签: javascript asp.net-mvc-4 bundling-and-minification


    【解决方案1】:

    CdnFallbackExpression 需要匹配您正在测试的库; window.jquery 不在我的信箱上。试试这个:

    jqueryBundle.CdnFallbackExpression = "window.jQuery"; // note 'Q'.
    

    这将修复内联测试(从而阻止调用本地脚本)。

    【讨论】:

    • 该死的我智障,我没有放正确的代码,后备表达式实际上是“window.jQuery”,我将编辑我的答案..
    • 确定不是window.jquery?如果是,请将Q 大写,所有内容都应更正。
    • 嗯,就是这样。万分感谢!您可能想要编辑您的答案以反映我的编辑(CdnFallbackExpression 测试/来源)
    • 为了完全清楚,window.jQuery 是一个特殊的短语,它不必匹配您代码中的任何内容:*.com/questions/1014203/…。每个图书馆都有自己的CdnFallbackExression。您必须查找它们。