Asp.net mvc 5 使用CdnFallbackExpression的MVC捆绑包生成无版本捆绑包

Asp.net mvc 5 使用CdnFallbackExpression的MVC捆绑包生成无版本捆绑包,asp.net-mvc-5,browser-cache,cdn,fallback,scriptbundle,Asp.net Mvc 5,Browser Cache,Cdn,Fallback,Scriptbundle,在MVC中使用bundle fallback时,我注意到当cdn失败时,fallback bundle没有附加版本字符串。有没有办法强制显示版本字符串 我担心的是,如果我移动到较新版本的jQuery(或bootstrap或其他版本),脚本将不会在客户端上更新,因为它可能仍在缓存中(因为默认情况下缓存长度为1年) 例如,此捆绑包配置: Public Module BundleConfig Public Sub RegisterBundles(ByVal bundles As BundleC

在MVC中使用bundle fallback时,我注意到当cdn失败时,fallback bundle没有附加版本字符串。有没有办法强制显示版本字符串

我担心的是,如果我移动到较新版本的jQuery(或bootstrap或其他版本),脚本将不会在客户端上更新,因为它可能仍在缓存中(因为默认情况下缓存长度为1年)

例如,此捆绑包配置:

Public Module BundleConfig
    Public Sub RegisterBundles(ByVal bundles As BundleCollection)

        BundleTable.EnableOptimizations = True
        bundles.UseCdn = True

        Dim jQuery2 = New ScriptBundle("~/bundles/jQuery2", "//broken.ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js") _
                      .Include("~/Scripts/jquery-2.1.4.min.js")
        jQuery2.CdnFallbackExpression = "window.jQuery"
        bundles.Add(jQuery2)

    End Sub
End Module
嵌入此呼叫:

@Scripts.Render("~/bundles/jQuery2")
生成此输出:

<script src="//broken.ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
    (window.jQuery)||document.write('&lt;script src="/bundles/jQuery2"&gt;&lt;\/script&gt;');
</script>
<script src="/bundles/jQuery2"></script>

(window.jQuery)| document.write('script src=“/bundles/jQuery2”\/script');
这是一个bug、一个疏忽,还是我缺少了一些东西来显示版本字符串

我希望回退包呈现为:

<script src="/bundles/jQuery2?v=somejunkuniquetothisversionofthefile"></script>

我怎样才能做到这一点


我知道,但是作者没有更新他的问题以包含任何代码,所以我在这里这么做。

好吧,一般来说,这是一个错误的问题。如果您怀疑这是一个bug,请将问题发布到CodePlex站点:。除此之外,我能给你的最好的猜测是,由于实际的捆绑文件只是一个后备包,他们忽略了缓存buster来强制缓存,因此在CDN关闭的时候,你的站点可能仍然可以跳过请求。@ChrisPratt我也有这样的想法,但如果是故意的,这似乎是一个疏忽。谢谢你对CodePlex的指导,我会回答我的问题。好吧,一般来说,这是一个错误的地方。如果您怀疑这是一个bug,请将问题发布到CodePlex站点:。除此之外,我能给你的最好的猜测是,由于实际的捆绑文件只是一个后备包,他们忽略了缓存buster来强制缓存,因此在CDN关闭的时候,你的站点可能仍然可以跳过请求。@ChrisPratt我也有这样的想法,但如果是故意的,这似乎是一个疏忽。感谢您对CodePlex的指导,我将回答我的问题。