作為客戶端開(kāi)發(fā),經(jīng)常需要驗(yàn)證服務(wù)端數(shù)據(jù)改變后本地app的行為,就拿最近遇到的一個(gè)問(wèn)題:webview打開(kāi)的網(wǎng)頁(yè)頁(yè)面,后臺(tái)更新圖片后,webview打開(kāi)后還是之前的頁(yè)面,圖片沒(méi)有更新,納尼!我得自己驗(yàn)證下,說(shuō)干就干,但是怎么替換圖片然后驗(yàn)證呢,總不能每次都找后臺(tái)同學(xué)去換圖片,還是得自己想辦法,二話不說(shuō)就搞起:
1.搭建本地服務(wù)器:
Mac默認(rèn)安裝了Apache的,因此只需要打開(kāi)Terminal,啟動(dòng)服務(wù):
//開(kāi)啟apache: ? ? ? ? sudo apachectl start
//重啟apache: ? ? ? ? sudo apachectl restart
//關(guān)閉apache: ? ? ? ? ?sudo apachectl stop
然后在瀏覽器里輸入localhost或者localhost:80(注意:不要輸入localhost:8080),如果出現(xiàn)如下提示,則證明啟動(dòng)成功。(注意:如果沒(méi)有用命令啟動(dòng),直接鍵入localhost:80也會(huì)出現(xiàn)it works!,但是服務(wù)其實(shí)是沒(méi)有啟動(dòng),這點(diǎn)需要注意下)

2.部署本地網(wǎng)頁(yè)資源:
Apache存放資源的路徑是:/Library/WebServer/Documents,把自己的網(wǎng)頁(yè)和資源放進(jìn)去就可以打開(kāi)了。本地apache服務(wù)器上的資源目錄如下:

3.創(chuàng)建工程項(xiàng)目進(jìn)行測(cè)試:
為了簡(jiǎn)單起見(jiàn),我只寫(xiě)一個(gè)簡(jiǎn)單的first.html文件,該文件中有個(gè)image標(biāo)簽;iOS工程直接xcode創(chuàng)建即可,需要查看工程的我在后面打包上傳了工程,該工程有兩個(gè)頁(yè)面:
頁(yè)面一:只有一個(gè)button

頁(yè)面二:一個(gè)webview控件,一個(gè)wkwebview控件

4.開(kāi)始測(cè)試:
關(guān)于解決網(wǎng)頁(yè)緩存問(wèn)題,具體操作方式參見(jiàn)www.zhihu.com/question/27040218,通過(guò)meta標(biāo)簽修改html文件的方式不能保證所有的瀏覽器都沒(méi)問(wèn)題,不是全面的解決方案;通過(guò)對(duì)圖片文件做版本控制的方法也能解決問(wèn)題,但是需要后臺(tái)實(shí)時(shí)變更圖片文件名稱,也不太完美,秉承能自己搞定的問(wèn)題就不麻煩別人的原則,這里從ios端入手解決。
1)嘗試1:代碼如下

修改apache中的圖片資源,發(fā)現(xiàn)確實(shí)是圖片還是之前的圖片。
2)嘗試2:代碼如下

修改apache中的圖片資源,發(fā)現(xiàn)圖片可以實(shí)時(shí)更新。問(wèn)題解決?。?!好開(kāi)心是不是~
總結(jié):通過(guò)設(shè)置webview不讀緩存可以解決緩存不能及時(shí)更新的問(wèn)題,對(duì)于簡(jiǎn)單頁(yè)面來(lái)說(shuō)可以這樣使用;但是對(duì)于復(fù)雜的頁(yè)面,每次進(jìn)入頁(yè)面都要重新加載數(shù)據(jù),用戶體驗(yàn)可能不好。最徹底的解決辦法還是需要在h5頁(yè)面對(duì)資源做版本控制,這樣在每次更新資源的時(shí)候,都能第一時(shí)間來(lái)加載最新資源。
最后上傳下xcode工程。