動態生成js數據Response.Expires=1440居然無效?

項目當中有一些數據,好比多語言翻譯,要求作語言包,起初固然是作成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限制,將爲你訪問服務器獲取新資源。

虛驚一場,是否是浪費表情了

相關文章
相關標籤/搜索