因為在基于原生 js + jQ 開發(fā)微信活動頁面時,已經(jīng)上線的項目。更改,緩存實在是影響嚴重。故有了以下總結
方案一
改文件名
方案二
鏈接尾部加上資源版本號,更改過的資源,需要更新版本號
<link rel="stylesheet" type="text/css" href="./css/index.css?v=1.0">
<img class="banner--event-date" src="./imgs/event_date.png?v=1.0" alt="">
<script src="./js/index.js?v=1.0" type="text/javascript" charset="utf-8"></script>
.step-1 {
background-image: url(../imgs/step_1.png?v=1.0);
}
方案三
建立版本號比對校驗,每次發(fā)版,都要更新版本號
- index.js
;(function($) {
// 必須與 version.json 版本一致
var version = '1.0';
// 獲取當前目錄路徑
var jsLoaded = document.scripts;
var currentJs = jsLoaded[jsLoaded.length - 1].src;
var path = currentJs.substring(0, currentJs.lastIndexOf('/') + 1);
$.ajax({
url: path + 'version.json?date=' + Date.now(), // 禁止緩存文件
method: 'GET',
success: function(res) {
// 版本號不一致時,存在緩存。強制刷新
if (res.version != version) {
location.reload(true);
}
},
error: function(error) {
console.warn(error)
}
})
})(window.jQuery || window.$ || $);
- version.json
{
"version": "1.0"
}
在下實在是被緩存爆出翔了。
另外,在iOS8下,微信緩存真的很變態(tài)。怎么刷新都不更新,殺掉微信進程后,再打開微信,才會更新。
方案一和方案二,改變之后,都需要客戶端刷新一次網(wǎng)頁才行。目前來看,方案二 + 方案三 是比較好的。