webview应用首屏优化

这里首屏优化是指用户安装应用后,首次打开应用消耗时间的优化。 其中比较耗时的一点是首次打开webview应用,加载静态资源。 优化思路是,首次打开应用,使用客户端拦截请求,返回本地文件。以后的请求优化由ServiceWorker接管。

webview请求过程

一个静态资源的请求,分为以下4个过程按顺序执行

  1. ServiceWorker
  2. http缓存
  3. App应用拦截
  4. 网络服务

注意:sw.js文件的规则不在此列,sw.js文件好像始终请求网络

image.png

有以下几点需要注意:

第一步 ServiceWorker 必须是安装好的

第一次进入应用,ServiceWorker并未安装,所以会被直接跳过,进入http缓存

ServiceWorker的请求,也会先查看http缓存

就是说,从ServiceWorker发出的请求,也会遵循http缓存规范,http缓存中有的文件,会被直接返回给ServiceWorker

只有ServiceWoker和http缓存都未命中,才会被App应用拦截

App应用拦截的限制

App应用拦截webview请求,是通过复写shouldInterceptRequest方法实现

@TargetApi(VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,
                    WebResourceRequest request) {

经过测试,他有限制:
只会拦截html请求和写在html中的资源请求(即通过

你可能感兴趣的:(webview应用首屏优化)