1. 程式人生 > >動態生成js資料Response.Expires=1440竟然無效?

動態生成js資料Response.Expires=1440竟然無效?

專案當中有一些資料,比如多語言翻譯,要求做語言包,起初當然是做成i18n.js檔案,但是每個階段版本更新都會增加一些key,那麼釋出的時候只能給<script>的src增加?20180913版本號,令客戶端載入新的js。

這麼做其實很不方便,平時釋出可能忘記更新母版的script版本號。

現在這裡有比較一勞永逸的方式:

1、編寫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;

        }
     }  

2、修改你的引用

<script src="/lang/js"></script>

ok,你的js資料來源在客戶端將快取1天,確保第2天能取新的(要是覺得不夠可以改成1小時、6小時),確保晚間你的釋出,使用者第二天不會用舊的js。

測試:

Webkit核心,訪問,跳轉一次URL,顯示form cache,確定不會短時間內重複載入。

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限制,將為你訪問伺服器獲取新資源。

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