熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

js文件緩存之版本管理詳解

2013-11-15 12:17:01  來源: JSP教程 

  近幾個月來的工作是一個交易系統持續改進項目迭代發布周期大約為~最近一次迭代是V在禮拜三完成發布不幸的是第二天上午就被老大逮過去原來老大從生產中揪出了一個bug大致的問題如下

  系統中有一個常用的自定義控件目的是協助選擇客戶而V版的持續改進需求是給控件增加兩個篩選選項支持不同的默認值配置很簡單的一個需 求代碼修改也簡單其中一個修改是給一個js文件裡邊的一個函數增加了一個傳入參數用來傳遞配置值經過RCRTW測試一切都顯得很正常不過上 了生產才被發現bug了加載出來的客戶明顯不正常數目不對也與預期的查詢配置不相符

  檢查控件內部跳轉鏈接發現問題傳遞的參數明顯與預期不符而這個鏈接則是由上面修改過的JS函數生成因此判定問題是由於客戶端緩存了原版JS 文件新函數的調用由舊函數所替換引發的經過清除緩存重新加載頁面後這個自定義控件能夠正常工作很不幸的是我們是不能通過打電話告訴每一位用 戶你需要清除緩存然後才能正常使用這個功能

  到此時我才意識到需要一種方法來控件JS的緩存問題否則後續任何涉及JS文件內容的修改都會因為緩存無法獲取最新JS文件而導致生產事故

  原則上我們是需要在有JS更新的時候才會去重新加載JS文件而不是每次都重新加載因此第一種做法給JS應用地址後添加隨機參數是不可取的因為它意味著幾乎每次加載頁面都會是重新加載JS而不會合理的利用緩存JS但是我們還有第二種更合理的做法如果關注過一些國外網站代碼會發現他們通常是在js鏈接後添加一個版本號參數而不是隨機數當js代碼發生修改時只需要將版本號加就可以很巧妙的解決通知客戶端更新js文件不知道誰是第一個想到這種方法的人不過毫無疑問他是值得我們欽佩的真是一個不錯的idea的!

  附贈些許代碼
<script src="/JavaScript/SelectOpenWindowjs?v=" type="text/javascript"></script>


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20638.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.