項目當中有一些數據,好比多語言翻譯,要求作語言包,起初固然是作成i18n.js文件,可是每一個階段版本更新都會增長一些key,那麼發佈的時候只能給<script>的src增長?20180913版本號,令客戶端加載新的js。javascript
這麼作其實很不方便,平時發佈可能忘記更新母版的script版本號。java
如今這裏有比較一勞永逸的方式:緩存
一、編寫Controller,好比服務器
public class LangController : Controller { public ActionResult Js(string langType) { var data = Get你的數據源(langType); Response.Write("var lang = "data);
Response.ContentType = "application/x-javascript";
Response.Expires = 1440;app
}
}
二、修改你的引用測試
<script src="/lang/js"></script>
ok,你的js數據源在客戶端將緩存1天,確保第2天能取新的(要是以爲不夠能夠改爲1小時、6小時),確保晚間你的發佈,用戶次日不會用舊的js。spa
測試:翻譯
Webkit內核,訪問,跳轉一次URL,顯示form cache,肯定不會短期內重複加載。3d
IE11測試,首次訪問調試
跳轉URL,納尼!怎麼仍是從新加載。
通過一輪百度、Bing、谷歌以後,消耗2小時調試時間…
增長代碼
Response.Write("document.write('" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") + "');");
關掉IE的F12
IE11測試,首次訪問
跳轉URL,OK有效。
緣由,IE11若是開着F12,會忽略Expires限制,將爲你訪問服務器獲取新資源。
虛驚一場,是否是浪費表情了