缓存与Scripts.Render破坏,但没有捆绑URL

Con*_*ell 7 asp.net-mvc caching bundling-and-minification

当使用Bundle并将EnableOptimisations设置为true时,输出URL包含一个哈希值,以防止浏览器在缓存中从缓存中加载文件(如果已更改).

@Scripts.Render("~/content/js/global")
Run Code Online (Sandbox Code Playgroud)

输出:

<script src="/content/js/global?v=PqstRRGF8qsUsJfHu6NBBBp6eDxYBz1JCbHY6CQJVks3"></script>
Run Code Online (Sandbox Code Playgroud)

但是,我们的应用程序中的某些文件特定于一个页面.我们直接引用这些:

@Scripts.Render("~/areas/areaname/content/js/page-name.js")
Run Code Online (Sandbox Code Playgroud)

在这种情况下,输出URL没有哈希值,因此被缓存,当我们发布对这些文件的更改时会导致问题.

我们宁愿不单独更改每个引用,也不必每次更改文件时手动更改URL.

如何全局地向所有捆绑的脚本和样式URL添加哈希(或版本号)?

Con*_*ell 7

我最终得到了一个完全不同的解决方案,但是,我偶然发现了一个包含一个想法的问题,这个想法可以帮助我并希望这有助于其他人.

您可以手动设置默认标记格式并包含版本号.

string versionNumber = "1.2.3.4"; // get from assembly or config setting

Styles.DefaultTagFormat = string.Format("<link href='{{0}}?v={0}' rel='stylesheet'/>", versionNumber);
Scripts.DefaultTagFormat = string.Format("<script src='{{0}}?v={0}'></script>", versionNumber);
Run Code Online (Sandbox Code Playgroud)

我能看到的唯一问题是你的网址是否已包含查询字符串.这将附加第二个?而不是一个&.