当使用EnableOptimisations设置为true的Bundles时,输出URL包含一个哈希值,以防止浏览器从缓存中加载文件(如果已更改)。
@Scripts.Render("~/content/js/global")
输出:
<script src="/content/js/global?v=PqstRRGF8qsUsJfHu6NBBBp6eDxYBz1JCbHY6CQJVks3"></script>
但是,我们的应用程序中的某些文件特定于一个页面。我们直接引用这些:
@Scripts.Render("~/areas/areaname/content/js/page-name.js")
在这种情况下,输出URL没有哈希值,因此被缓存,当我们发布对这些文件的更改时会导致问题。
我们不是单独更改每个引用,也不必在每次更改文件时手动更改URL。
如何全局向所有不捆绑包的脚本和样式网址添加哈希(或版本号)?
答案 0 :(得分:7)
我最终得到了一个完全不同的解决方案,但是,我偶然发现a question包含了一个可以帮助我并希望这有助于其他人的想法。
您可以手动设置默认标记格式并包含版本号。
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);
我可以看到的唯一问题是您的网址是否已包含查询字符串。这会追加第二个?
而不是&
。