背景
投產(chǎn)發(fā)布完成后直晨,生產(chǎn)上時常出現(xiàn)用戶訪問APP的H5頁面仍為舊的資源汗销,需要手動清除緩存后衙傀,才能加載最新的H5資源跟束。這樣會導(dǎo)致用戶無法及時體驗到最新的業(yè)務(wù)功能莺奸,而某些H5與服務(wù)端強關(guān)聯(lián)的場景,甚至會導(dǎo)致業(yè)務(wù)功能無法正常進行冀宴。
原因分析
Android APP設(shè)置webview為默認緩存策略灭贷,即默認采用服務(wù)器設(shè)置的cache-control策略。
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
而APP對應(yīng)的服務(wù)端暫未設(shè)置cache-control略贮,通過網(wǎng)上查閱資料甚疟,當服務(wù)端未設(shè)置緩存策略時,APP默認會采用啟發(fā)式算法:即取響應(yīng)頭的(Date-LastModified)10%作為緩存時間逃延。比如H5資源最新發(fā)布時間是2024年3月8號9:00览妖,用戶首次訪問該H5頁面時間是2024年3月8號10:00,那緩存時間則為(1小時*10%)=6分鐘揽祥,即6分鐘內(nèi)讽膏,即使有新資源發(fā)布,該用戶訪問當前頁面都是緩存的資源盔然。超過6分鐘桅打,緩存時間失效是嗜,用戶則可以訪問到最新的資源愈案。
解決思路
解決前端資源緩存問題,有以下幾種方案鹅搪,經(jīng)過綜合評估站绪,決定采用方案3。緩存方案.png
方案驗證
以下是針對現(xiàn)有生產(chǎn)問題的復(fù)現(xiàn)丽柿,及采用方案3的測試驗證結(jié)果恢准。可以看出甫题,測試結(jié)果均符合預(yù)期馁筐。緩存測試.png