最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2013年07月05日 15:00:22   作者:  
以前也做過不少項(xiàng)目,但從來就沒有把關(guān)注的目光投向過js文件緩存。最近終于在毫無意識的情況下跳進(jìn)了這個大坑

近幾個月來的工作是一個交易系統(tǒng)持續(xù)改進(jìn)項(xiàng)目,迭代發(fā)布周期大約為2~3周。最近一次迭代是V16版,在禮拜三完成發(fā)布。不幸的是,第二天上午就被老大逮過去。原來老大從生產(chǎn)中揪出了一個bug,大致的問題如下:

系統(tǒng)中有一個常用的自定義控件,目的是協(xié)助選擇客戶,而V16版的持續(xù)改進(jìn)需求是給控件增加兩個篩選選項(xiàng),支持不同的默認(rèn)值配置。很簡單的一個需求,代碼修改也簡單,其中一個修改是給一個js文件里邊的一個函數(shù)增加了一個傳入?yún)?shù),用來傳遞配置值。經(jīng)過RC、RTW測試,一切都顯得很正常,不過上了生產(chǎn)才被發(fā)現(xiàn)bug了。加載出來的客戶明顯不正常、數(shù)目不對,也與預(yù)期的查詢配置不相符。

檢查控件內(nèi)部跳轉(zhuǎn)鏈接,發(fā)現(xiàn)問題,傳遞的參數(shù)明顯與預(yù)期不符,而這個鏈接則是由上面修改過的JS函數(shù)生成。因此判定問題是由于客戶端緩存了原版JS文件,新函數(shù)的調(diào)用由舊函數(shù)所替換引發(fā)的。經(jīng)過清除緩存,重新加載頁面后,這個自定義控件能夠正常工作。很不幸的是,我們是不能通過打電話告訴每一位用戶,你需要清除緩存,然后才能正常使用這個功能。

到此時,我才意識到需要一種方法來控件JS的緩存問題,否則,后續(xù)任何涉及JS文件內(nèi)容的修改,都會因?yàn)榫彺鏌o法獲取最新JS文件,而導(dǎo)致生產(chǎn)事故。

原則上,我們是需要在有JS更新的時候,才會去重新加載JS文件,而不是每次都重新加載,因此第一種做法給JS應(yīng)用地址后添加隨機(jī)參數(shù)是不可取的,因?yàn)樗馕吨?,幾乎每次加載頁面都會是重新加載JS,而不會合理的利用緩存JS。但是,我們還有第二種更合理的做法,如果關(guān)注過一些國外網(wǎng)站代碼,會發(fā)現(xiàn),他們通常是在js鏈接后添加一個版本號參數(shù),而不是隨機(jī)數(shù),當(dāng)js代碼發(fā)生修改時,只需要將版本號加1,就可以很巧妙的解決通知客戶端更新js文件。不知道,誰是第一個想到這種方法的人,不過毫無疑問,他是值得我們欽佩的,真是一個不錯的idea的!

附贈些許代碼:
<script src="../JavaScript/SelectOpenWindow.js?v=1" type="text/javascript"></script>

相關(guān)文章

  • javascript基礎(chǔ)之?dāng)?shù)據(jù)類型詳解

    javascript基礎(chǔ)之?dāng)?shù)據(jù)類型詳解

    這篇文章主要介紹了如何理解JavaScript中的數(shù)據(jù)類型,幫助大家更好的學(xué)習(xí)JavaScript,感興趣的朋友可以了解下
    2021-11-11
  • JavaScript基礎(chǔ)知識點(diǎn)歸納(推薦)

    JavaScript基礎(chǔ)知識點(diǎn)歸納(推薦)

    下面小編就為大家?guī)硪黄狫avaScript基礎(chǔ)知識點(diǎn)歸納(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • JavaScript中prototype為對象添加屬性的誤區(qū)介紹

    JavaScript中prototype為對象添加屬性的誤區(qū)介紹

    prototype為對象添加屬性的的過程中有些誤區(qū),在本文將為大家詳細(xì)介紹下,感興趣的朋友可不要錯過
    2013-10-10
  • js字符串轉(zhuǎn)成JSON

    js字符串轉(zhuǎn)成JSON

    幾個不錯的JS字符串轉(zhuǎn)成JSON對象實(shí)例
    2013-11-11
  • javascript RegExp 使用說明

    javascript RegExp 使用說明

    這篇文章主要介紹了javascript RegExp 使用說明 ,需要的朋友可以參考下
    2016-05-05
  • 淺談JavaScript 框架分類

    淺談JavaScript 框架分類

    本文簡單介紹了javascript的5種框架分類,以及框架特征的相關(guān)資料,有需要的童鞋們可以參考下
    2014-11-11
  • JavaScript中document.referrer的用法詳解

    JavaScript中document.referrer的用法詳解

    這篇文章主要給大家介紹了關(guān)于JavaScript中document.referrer的用法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • JavaScript之編碼規(guī)范 推薦

    JavaScript之編碼規(guī)范 推薦

    JavaScript是一種語法靈活,簡單易懂的腳本語言。正因?yàn)殪`活,因此很多人在編寫代碼時,顯得很隨意,這就導(dǎo)致后期的修改、擴(kuò)展和維護(hù)變得異常困難。遵循統(tǒng)一的編碼規(guī)范,不僅對C++和Java這種編譯型語言很重要,對JavaScript腳本語言也同樣如此
    2012-05-05
  • mailto的使用技巧分享

    mailto的使用技巧分享

    如何使用mailto?對于大多數(shù)人來說并不是很陌生,但是實(shí)用上的細(xì)節(jié)部分你們有沒有注意到,接下來分享一下本人在使用過程中的經(jīng)驗(yàn),需要了解的朋友可以參考下
    2012-12-12
  • 處理及遍歷XML文檔DOM元素屬性及方法整理

    處理及遍歷XML文檔DOM元素屬性及方法整理

    本文整理了一些用于處理及遍歷XML文檔的DOM元素屬性與方法及動態(tài)創(chuàng)建內(nèi)容時所用的W3C DOM屬性和方法,有需求的朋友可以參考下,希望對大家有所幫助
    2013-08-08

最新評論

沙河市| 涞水县| 铁岭县| 成安县| 平泉县| 合山市| 天等县| 浏阳市| 五莲县| 黑山县| 宁远县| 肃北| 洪湖市| 新民市| 九江县| 汽车| 云南省| 西平县| 盐山县| 林口县| 金华市| 汨罗市| 贵德县| 尉犁县| 宁蒗| 垦利县| 韶山市| 南木林县| 昌邑市| 清流县| 常熟市| 德清县| 灵石县| 民勤县| 祁东县| 定远县| 额济纳旗| 德化县| 和平区| 瑞丽市| 轮台县|