背景:在app中內嵌的h5,部署更新h5項目以后,app中獲取不到最新的代碼資源,頁面無法得到及時更新(除非清空app的應用緩存,但若每次更新h5都需要手動清空緩存,感覺體驗有待優化)
答案是ios自帶的緩存
觀察html頁面的請求會走上圖中的4 ,也就是帶了緩存,接着找了nginx配置 但沒看到配置cache-control啥的,很疑惑 難道沒配置會默認自帶緩存嗎,看了web端沒問題,頻繁刷新,每次都能走html頁面的請求,但是在app端 只有第一次走 ,后面就沒有了,猜測應該是ios自己緩存的原因了
但是web端 request headers從沒見過帶if modify since這些,ios說第一次請求,那邊就能看到有 如下圖:
殺掉應用,重打開app,(相當於第二次打開app)就沒有此請求了,看來是被app緩存起來這個頁面了,但是多出了build.json版本號的獲取,
解決方案一:
結合前代碼,自動加版本號,達到強制刷新頁面(每打包一次,更改一下version值),app緩存的應該是舊的version,h5部署更新后,build.json版本會更新,從而觸發reload
方案二:
參考: https://www.cnblogs.com/xiao-ling-zi/p/10883198.html