在訪問量比較大的系統中,我們需要將一些靜態的文件在客戶端緩存,以減少下載的流量,從而加快客戶端訪問的速度。但是緩存會帶來一個問題,就是如何在服務端更新完文件之後,客戶端能夠及時得到更新。
解決思路:
1. 在一個配置文件中維護js文件map;
2. 在頁面中通過js map的key來動態加載js文件;
3. 在js文件做出變動之後,只要修改相應js的版本號
實例:
1. 在一個配置文件(config.js)中維護js文件map(注意:config.js是不緩存的,每次更新)
2. 在頁面中通過js map的key來動態加載js文件;
<script src=config.js></script>
<script>
loadJS("edit");
</script>
//根據傳入的key,動態生成js加載語句
function loadJS(sKey) {
var node = JSHash[sKey];
for(var i =0;i < node.length; i ++) {
document.writeln('<script src="'+node[i].url+'?version='+node[i].version+'"><\/script>');
}
}
//-->
</script>
3. 在js文件做出變動之後,只要修改相應js的版本號即可.這樣由於鏈接不一樣了,就會對這個變動的js進行重新下載。其他js由於鏈接不變,所以仍舊使用緩存中的js