我已经看到了使用 urlArgs 强制文件更改的许多解决方案,但如果文件已更新,是否有一种有效的方法让它自动更改单个文件?
是否可以破坏仅修改过的文件的缓存?
The biggest example being this topic.
function bust(path) {
return path + '?bust=' + (new Date()).getTime();
}
require.config({
baseUrl: '/base/path',
paths: {
'fileAlias': bust('fileLikelyToChange'),
'anotherFileAlias': bust('anotherFileLikelyToChange'),
'jQuery': 'jQuery'
},
});
问题是这个解决方案每次都会破坏缓存,而不是仅在文件被修改时。
答案 0 :(得分:0)
我的解决方案可能有点沉重,并且是这个和其他解决方案的混合,但它适用于我。
第1部分: 在html中,将所有依赖脚本附加缓存清除查询字符串 - >
<script type="text/javascript">
var require = {
urlArgs : "bust="+ Math.random()
}
</script>
<script data-main="js/app" src="js/require.js"></script>
第2部分: 然后在app.js中添加一个自定义半身像方法,仅应用于可能已更改的文件:
function bust(path) {
return path + '.js?bust=' + Math.random();
}
第3部分: 使用空字符串更新urlArs:urlArgs:“”覆盖在第1部分中普遍应用的缓存清除查询字符串,并将缓存清除方法仅添加到您选择的文件中:
requirejs.config({
urlArgs: "",
paths: {
'utilities': 'utilities',
'controller': bust('controller'),
'main': 'main'
}
});