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添加哈希(或版本号)?
我最终得到了一个完全不同的解决方案,但是,我偶然发现了一个包含一个想法的问题,这个想法可以帮助我并希望这有助于其他人.
您可以手动设置默认标记格式并包含版本号.
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)
我能看到的唯一问题是你的网址是否已包含查询字符串.这将附加第二个?
而不是一个&
.
归档时间: |
|
查看次数: |
4108 次 |
最近记录: |