2014-09-05 56 views
2

我见过使用urlArgs来强制文件更改的许多解决方案,但是有没有一种有效的方法来让文件自动更改只有单个文件?RequireJS自动单个文件缓存胸围

是否有可能仅对已修改的文件进行缓存?

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

怎么能RequireJS知道文件是否被修改? – idbehold 2014-09-05 19:24:52

+0

你的问题是我的答案。 RequireJS似乎没有可行的方法。试图寻找可能没有的解决方案。 :/ – nicholinde 2014-09-05 19:33:45

回答

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部分遍应用于查询字符串和添加缓存清除方法O nly到您选择的文件:

requirejs.config({ 
    urlArgs: "", 
    paths: { 
     'utilities': 'utilities', 
     'controller': bust('controller'), 
     'main': 'main' 
    } 
});