webview初始化后首次访问服务器出现空白页

来源:互联网 发布:淘宝2017年双十一 编辑:程序博客网 时间:2024/06/06 11:02
我们的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根目录的默认配置调整到第一个位置
0 0
原创粉丝点击