[TOC]
这里首屏优化是指用户安装应用后,首次打开应用消耗时间的优化。 其中比较耗时的一点是首次打开webview应用,加载静态资源。 优化思路是,首次打开应用,使用客户端拦截请求,返回本地文件。以后的请求优化由ServiceWorker接管。
WebView的请求过程
一个静态资源的请求,分为以下4个过程按顺序执行
- ServiceWorker
- http缓存
- App应用拦截
- 网络服务
1. ServiceWorker 必须是安装好的
第一次进入应用,ServiceWorker并未安装,所以会被直接跳过,进入http缓存2. ServiceWorker的请求,也会先查看http缓存
就是说,从ServiceWorker发出的请求,也会遵循http缓存规范,http缓存中有的文件,会被直接返回给ServiceWorker3. 只有ServiceWoker和http缓存都未命中,才会被App应用拦截
App应用拦截的限制
App应用拦截webview请求,是通过复写shouldInterceptRequest方法实现
@TargetApi(VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,
WebResourceRequest request) {
经过测试,他有限制:只会拦截html请求和写在html中的资源请求(即通过