RequireJS自动单文件缓存破解

时间:2014-09-05 18:58:26

标签: caching requirejs

我已经看到了使用 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'
    },
});

问题是这个解决方案每次都会破坏缓存,而不是仅在文件被修改时。

1 个答案:

答案 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'
    }
});