1. 程式人生 > >webview初始化後首次訪問伺服器出現空白頁

webview初始化後首次訪問伺服器出現空白頁

我們的h5+webview封裝的app在安卓和ios平臺上線了。ios能稽核通過挺出乎我意料的,本來已經做好打算,如果第一版稽核不通過,將h5打包到本地應用程式中釋出。蘋果能接受bs型結構大幅降低了這兩個平臺的開發和維護難度。 上線是個好事情,但是我們程式上線後發現,進入app的時候,會偶爾出現空白頁面的問題,無論是安卓還是ios平臺,都有這個問題。我們的頁面是靜態的頁面,放在nginx上面,不應該出現訪問不了的問題,原來在測試環境的時候從來沒有出現過這個問題。首先看nginx日誌,沒有發現什麼問題。每天早上起來之後,第一次訪問的時候出現空白頁的概率最大,一旦訪問過一次後,這個問題就出現不了了。從使用者的實際使用場景來說,我們的軟體不是一個太高頻訪問的程式,使用者遇到這個問題的概率要比我們大得多。一開始在伺服器上糾結了一段時間,後來想明白是域名解析出現問題了,我們測試環境是直接訪問的ip,不需要域名解析,因此沒有發現這個問題。定製瀏覽器在初始化後首次訪問頁面的時候,如果上一次的域名解析結果超過了域名的有效時間(6個小時),需要瀏覽器再次做域名解析的時候,就會出現問題。 發現了問題了,接下來就好辦了,靠瀏覽器做首次域名解析有問題,就不靠它了,改為程式先做一次域名解析,將解析的結果替換域名,拼接成一個帶ip的地址交給瀏覽器訪問,就再也不會出現空白頁的問題了。 這個問題解決了,但是帶來了一個新的問題,就是nginx端伺服器如何配置的問題。由於修改為ip訪問,原來nginx基於域名的配置轉發就失效了,並且還要相容修改前後瀏覽器兩種訪問方式。好訊息是ajax訪問不需要做域名解析,從來沒有出現過解析不了的問題。只需要解決靜態頁面的相容問題就好。經過嘗試,修改成後如下方案。 1.對於修改後的瀏覽器的來說,將它的訪問地址修改為nginx html根目錄的相對目錄。這樣即使是沒有網址,他也可以訪問到h5頁面。 2.對於修改前的瀏覽器來說,仍然走依靠域名配置的地址。 3.調整nginx的配置相對位置,nginx的策略是如果能在配置中找到訪問的域名,就走域名配置下的路徑,如果沒有找到配置的域名,就採用第一個配置。因此將訪問nginx根目錄的預設配置調整到第一個位置