GMTC2018 《基于多项目的离线缓存实现方案》 刘弟新

2020-02-27 150浏览

  • 1.基于多海外项目的离线缓存方案 刘弟新 掌众集团
  • 2.
  • 3.
  • 4.• 项目背景 • 离线缓存简介 • 遇到的问题 • 资源分离 • Lazy Preload • 改进效果
  • 5.项目背景 • Android WebView + H5 SPA • 多国家业务支持 • 多样性网络环境 越南 印尼 菲律宾 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% 79.0% 36.5% 59.9% 43.0% 6.0% 14.0% 1.0% 19.0% 1.5% 越南 印尼 2g 3g 4g wifi 25.0% 15.0% 0.1% 菲律宾
  • 6.Wha项t M目ar背ket景Need ? 线上资源较多 首页加载时间长 用户&带宽流量成本高 6 服务器压力大
  • 7.离线缓存简介 H5 Android 浏览器缓存机制 Hybrid缓存机制
  • 8.WebView request response init Apk cache.zip source-map.json CacheInterceptor Server source-map.json Exist && N Match? Y Cache Manager request response & cache update & diff
  • 9.遇到的问题 • 离线资源包越来越大 • 业务快速迭代时,部分页面加载还是存在大量等待
  • 10.资源分离-web资源拆分 src 越越南南 印印尼尼 菲律宾 越南 印尼 菲律宾 Dir Filter src DepScanner webpack Unsorted dist ChunkName Filter Source-map Generator Sorted dist File Filter
  • 11.资源分离-文件标识 Dir Filter src DepScanner webpack Unsorted dist ChunkName Filter Source-map Generator Sorted dist • 资源分类管理 • webpackChunkNa me 增加标识 • 每个页面组件增加页 面内入口模块标识 • ... File Filter
  • 12.资源分离-文件依赖扫描 Dir Filter src DepScanner webpack Unsorted dist ChunkName Filter Source-map Generator Sorted dist • DepScan • ChunkDepMap • ... File Filter
  • 13.资源分离-构建&分离 Dir Filter src DepScanner webpack Unsorted dist ChunkName Filter Source-map Generator Sorted dist • url-loader • assets-webpack-plugin • ... File Filter
  • 14.资源分离-筛选分离 Dir Filter dist +source-map.json src DepScanner webpack Unsorted dist ChunkName Filter Source-map Generator Sorted dist File Filter • chunk <==> distFiles • cacheSwitch • version • ...
  • 15.WebView request response init Apk cache.zip source-map.json CacheInterceptor Server source-map.json Exist && N Match? Y Cache Manager request response & cache update & diff
  • 16.Lazy Preload Init Init Index A B C Index A B C
  • 17.Lazy Preload Index A B D E C F G H I J KL MN Index A B D E C F G H I J KL MN
  • 18.改进效果 100ms 加载静态资源时间 99% 流量消耗 1.72MB 包大小
  • 19.
  • 20.
  • 21.
  • 22.