js緩存問(wèn)題,修改js后代碼不生效問(wèn)題

缺陷分析.png

問(wèn)題描述

在上線新版本sdk的時(shí)候,發(fā)現(xiàn)有的用戶的操作還是調(diào)用的老版本JS里面的內(nèi)容,這樣就造成原來(lái)新的JS里面加上的限制不能限制用戶的操作,從而導(dǎo)致用戶無(wú)法使用新版功能。

問(wèn)題產(chǎn)生原因

如果在用戶之前已經(jīng)訪問(wèn)過(guò)系統(tǒng),那么瀏覽器中會(huì)緩存該系統(tǒng)的CSS、JS,這些CSS、JS緩存未過(guò)期之前,瀏覽器只會(huì)從緩存中讀取CSS和JS,如果在服務(wù)器上修改了css和js,那么這些修改在用戶的瀏覽器中是不會(huì)有變化的。

解決方案

解決方式一:

用戶按Ctrl + F5強(qiáng)制刷新頁(yè)面或者手動(dòng)清空了瀏覽器的緩存。此時(shí)瀏覽器會(huì)重新向服務(wù)器獲取CSS和JS文件,新的文件便會(huì)生效。

解決方式二:

當(dāng)然我們不可能要求每個(gè)客戶都做清理緩存的操作,于是便從代碼的角度著手解決這個(gè)問(wèn)題。在js后面添加版本號(hào),讓瀏覽器把這個(gè)JS文件當(dāng)做新的文件重新向服務(wù)器獲取資源。

加版本號(hào)之前:

<pre style="margin: 10px 0px 0px; padding: 0px; font-family: ConfluenceInstalledFont, monospace; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"><script type="text/javascript" th:src="@{/js/test/index.js}"></script></pre>

加版本號(hào)之后:

<pre style="margin: 10px 0px 0px; padding: 0px; font-family: ConfluenceInstalledFont, monospace; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;"><script type="text/javascript" th:src="@{/js/test/index.js?v=1.0}"></script></pre>

此時(shí)問(wèn)題解決,CSS與上類似。

但是針對(duì)To B的這種業(yè)務(wù)模式,客戶嵌入的js-sdk不能隨意更改名字,因此引申出第三種方法

解決方式三:
<script type="text/javascript" src="/js/common.js?t={{date("Y-m-d")}}" ></script>

使用日期,重新請(qǐng)求服務(wù)器。

<script type="text/javascript" src="/js/common.js?t={{time()}}" ></script> 使用時(shí)間戳
<script type="text/javascript" >loadJs("http://localhost:8081/static/html/convention.js.js?timestamp="+Math.random(),null);</script>

總結(jié)

在遇到諸如更新js的項(xiàng)目需求時(shí),開發(fā)和測(cè)試要注意此類問(wèn)題的解決,切記不要因小失大。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,621評(píng)論 1 32
  • 為了提升網(wǎng)站的訪問(wèn)速度,需要盡可能的減少客戶端與服務(wù)器端的請(qǐng)求數(shù)量與傳輸?shù)臄?shù)據(jù)量以及服務(wù)器從硬盤或數(shù)據(jù)庫(kù)讀取內(nèi)容的...
    木白no1閱讀 5,999評(píng)論 0 4
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級(jí)和職位的變化,入門級(jí)到專家級(jí),廣度和深度都會(huì)有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,670評(píng)論 0 7
  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,284評(píng)論 0 15
  • 持續(xù)分享第863天(20190522晴) 今天是一周中最忙碌、充實(shí)的一天。 5:30 起床 6:18 去上班 6:...
    松風(fēng)逸云閱讀 253評(píng)論 0 1

友情鏈接更多精彩內(nèi)容