cordova 实现网页缓存_Android:手把手教你构建 全面的WebView 缓存机制 & 资源加载方案...

本文详细探讨了Android WebView存在的性能问题,包括加载速度慢和流量消耗大,并提出了一系列解决方案。首先,介绍了前端缓存机制,如浏览器缓存、Application Cache、DOM Storage、Web SQL Database和IndexedDB。接着,讨论了资源预加载,通过预加载WebView对象和H5资源以提升加载效率。最后,提出自建缓存策略,通过拦截网络请求并使用本地资源,有效提高了页面静态资源的加载速度和减少了流量消耗。
摘要由CSDN通过智能技术生成

前言

  • 由于H5具备 开发周期短、灵活性好 的特点,所以现在 Android App大多嵌入了 Android Webview 组件进行 Hybrid 开发

  • 但我知道你一定在烦恼 Android Webview 的性能问题,特别突出的是:加载速度慢 & 消耗流量

  • 今天,我将针对 Android Webview 的性能问题,提出一些有效解决方案。


目录

59f79a9ea5c96deba7454e8e06b08f6e.png

示意图


1. Android WebView 存在什么性能问题?

  • Android WebViewH5 页面加载速度慢

  • 耗费流量

下面会详细介绍。

1.1 H5 页面加载速度慢

a0c7c2acb8befb75bd51699ececcf4f9.png

H5 页面加载速度慢的原因

下面会详细介绍:

1.1.1 渲染速度慢

前端H5页面渲染的速度取决于 两个方面:

  • Js  解析效率Js  本身的解析过程复杂、解析速度不快 & 前端页面涉及较多 JS 代码文件,所以叠加起来会导致 Js  解析效率非常低

  • 手机硬件设备的性能
    由于Android机型碎片化,这导致手机硬件设备的性能不可控,而大多数的Android手机硬件设备无法达到很好很好的硬件性能

总结:上述两个原因 导致 H5页面的渲染速度慢

1.1.2 页面资源加载缓慢

H5 页面从服务器获得,并存储在 Android手机内存里:

  • H5页面一般会比较多

  • 每加载一个 H5页面,都会产生较多网络请求:

  1. HTMLURL 自身的请求;

  2. HTML外部引用的JS、CSS、字体文件,图片也是一个独立的 HTTP 请求

每一个请求都串行的,这么多请求串起来,这导致 H5页面资源加载缓慢

总结:H5页面加载速度慢的原因:渲染速度慢 & 页面资源加载缓慢 导致

1.2 耗费流量

  • 每次使用 H5页面时,用户都需要重新加载 Android WebViewH5 页面

  • 每加载一个 H5页面,都会产生较多网络请求(上面提到)

  • 每一个请求都串行的,这么多请求串起来,这导致消耗的流量也会越多

1.3 总结

  • 综上所述,产生Android WebView性能问题主要原因是:

daed2baa68c317f3bfdec59c14229935.png

示意图

  • 上述问题导致了Android WebViewH5 页面体验 与 原生Native 存在较大差距。


2. 解决方案

针对上述Android WebView的性能问题,我提出了3种解决方案:

  • 前端H5的缓存机制(WebView 自带)

  • 资源预加载

  • 资源拦截

下面我将详细介绍。

2.1 前端H5的缓存机制

  • 定义
    缓存,即离线存储

  1. 这意味着 H5网页 加载后会存储在缓存区域,在无网络连接时也可访问

  2. WebView的本质 = 在 Android中嵌入 H5页面,所以,Android WebView自带的缓存机制其实就是 H5页面的缓存机制

  3. Android WebView除了新的File System缓存机制还不支持,其他都支持。

  • 作用

  1. 离线浏览:用户可在没有网络连接时进行H5页面访问

  2. 提高页面加载速度 & 减少流量消耗:直接使用已缓存的资源,不需要重新加载

具体应用
此处讲解主要讲解 前端H5的缓存机制 的缓存机制 & 缓存模式 :
a. 缓存机制:如何将加载过的网页数据保存到本地
b. 缓存模式:加载网页时如何读取之前保存到本地的网页缓存

前者是保存,后者是读取,请注意区别

2.1.1 缓存机制

  • Android WebView自带的缓存机制有5种:

  1. 浏览器 缓存机制

  2. Application Cache 缓存机制

  3. Dom Storage 缓存机制

  4. Web SQL Database 缓存机制

  5. Indexed Database 缓存机制

  6. File System 缓存机制(H5页面新加入的缓存机制,虽然Android WebView暂时不支持,但会进行简单介绍)

下面将详细介绍每种缓存机制。

1. 浏览器缓存机制

a. 原理
  • 根据 HTTP 协议头里的 Cache-Control(或 Expires)和 Last-Modified(或 Etag)等字段来控制文件缓存的机制

  • 下面详细介绍Cache-ControlExpiresLast-Modified & Etag四个字段

  1. Cache-Control:用于控制文件在本地缓存有效时长

如服务器回包:Cache-Control:max-age=600,则表示文件在本地应该缓存,且有效时长是600秒(从发出请求算起)。在接下来600秒内,如果有请求这个资源,浏览器不会发出 HTTP 请求,而是直接使用本地缓存的文件。

  1. Expires:与Cache-Control功能相同,即控制缓存的有效时间

  1. Expires

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值