2014-09-05 60 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' 
    } 
});