[TOC]

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

WebView的请求过程

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

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

    1. ServiceWorker 必须是安装好的

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

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

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

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

    App应用拦截的限制

    App应用拦截webview请求,是通过复写shouldInterceptRequest方法实现
@TargetApi(VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,
                    WebResourceRequest request) {

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