使用CdnFallbackExpression的MVC包产生无版本的包

时间:2015-10-01 16:30:40

标签: 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 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>

这是一个错误,一个疏忽,还是我错过了一些东西来让版本字符串出现?

我希望后备包呈现为:

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

我怎样才能做到这一点?

我知道this question has been asked before,但作者没有更新他的问题以包含任何代码,所以我在这里这样做。

0 个答案:

没有答案