企业级项目基于PWA缓存的最佳实践_第1页
企业级项目基于PWA缓存的最佳实践_第2页
企业级项目基于PWA缓存的最佳实践_第3页
企业级项目基于PWA缓存的最佳实践_第4页
企业级项目基于PWA缓存的最佳实践_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、企业级项目基于PWA缓存的最佳实践技术创新,变革未来业务现状01 |CURRENT SOLUTIONPWA 缓存策略02 |CACHE STRATEGIESSSR 方案03 |SERVER RENDER SOLUTIONCSR 方案04 |CLIENT RENDER SOLUTION更多场景05 |OTHER FEATURES业务现状业务现状800 ms1500 ms业务现状 手Q优化策略静态资源缓存方案首屏 HTML 缓存方案diff 更新800 ms业务现状 - 非手Q优化策略React 同构 SSRService Cache业务的使用场景复杂(手q, 微信, 浏览器, 微博)针对性优化成

2、本高1500 ms业务现状 - PWA场景覆盖并发限制更新机制储存空间PWA 缓存策略PWA SW 未安装状态PWA SW 已安装状态缓存策略 Cache-first:有缓存的时候返回缓存,没有缓存才会去请求并且把请求结果缓存 Stale-while-revalidate:如果有可用的缓存版本,则使用该版本,但下次会获取更新。 Network-first:现网超时后返回缓存 Cache-only:只读取缓存,没有就失败了 Network-only:只请求线上,不读写缓存 有缓存的时候返回缓存,没有缓存时请求现网SW Strategies (Cache-first)SW Strategies (

3、Stale-While-Revalidate)先走缓存,走完缓存发请求,请求的结果会用来更新缓存SW Strategies (Network-first)优先走现网,现网超时时返回缓存SW Strategies (Cache-only)只走缓存SW Strategies (Network-only)只走现网PWA 业务接入情况 (Mobile) 基于离线包方案,缓存静态资源PWA 业务接入情况 (Mobile) 基于离线包方案,缓存静态资源 缓存静态资源 接入后:+80ms PWA 业务接入情况 (PC)PWA 业务接入情况 (PC)PWA 业务接入情况 (PC)PWA 业务接入情况 (PC)

4、 缓存静态资源 接入后:+80ms 优先返回 SW Cache (Chrome 71 前策略)PWA SW Cache(Cache-race) 在SW中同时发起online与SW Cache请求,哪个快返回哪个耗时没有变化PWA SW Cache(Cache-race)PWA 静态缓存策略移动端PC端APP 对 Browser Cache 处理方式不一致在我们的现网数据中Disk Cache 50-70msDisk Cache1-5msMemory Cache 0-1ms结论建议静态资源上 SW Cache非离线刚需,静态资源不建议上 SW CacheSSR 方案SSR HTML Cache

5、(Browser Cache)Browser Cache 有缓存情况SSR HTML Cache (Browser Cache)Browser CacheBrowser Cache 无缓存情况无法及时更新修复 BUG!Browser Cache with BUGSSR HTML Cache (Browser Cache)Search in CacheReturn HTMLUpdate HTMLpostMessagereturn stateSSR HTML Cache (SW Cache)SW Cache (The second time)SSR HTML Cache (SW Cache)SW

6、Cache with BUGSSR 缓存方案静态资源HTML策略使用 Cache-first使用 stale-while-revalidateSSR 方案数据SSR 缓存方案静态资源HTML策略使用 Cache-first使用 stale-while-revalidate思考如何快速新增/删除/修改需要缓存的资源? 缓存了一个有 BUG 的 html,由于缓存问题,如何快速修复迭代?还有没有优化空间?PWA+ PlatformSW Cache 命中率提升命中率就可以降低首屏耗时?如何提升? 一级入口、二级入口?23%如何提升命中率 ?二级页预缓存策略 预缓存静态资源 预缓存 HTML 资源二次

7、用户命中率二次用户未命中的原因?不支持 SWSW 没注册完成Cache 存储空间满了,无法进行缓存设置过期时间缓存空间满时,先删除缓存的图片,再重试首次用户如何覆盖?资源预缓存策略 一级入口预缓存二级页面资源CSSJS资源预缓存策略 思考页面资源变更,如何及时更新?一级页面关联的二级页面比较多?每次只能发布来进行Config修改?CSSJS 一级入口预缓存二级页面资源 构建打通 平台关联 业务可关联多个 ID 根据当前 ID,PWA+ 平台下发其绑定业务 ID 相对应的资源文件PWA+ 预缓存策略PWA+ 预缓存策略ID: 1ID: 3HTML,JS,CSSHTML,JS,CSSHTML,JS

8、,CSS二级页面 SW 预注册策略 SW可以跨页面注册 在一级页面预注册二级页面的 SW,第一次就能命中二级页面 SWPageOnline一级页面 - 头部注册方案一级页面 - 头部注册方案关键在于 HTML 主文档解析时间和 SW 注册+网络请求时间本地验证,html 主文档解析时间约为 600ms,而 sw 注册的平均时间在 1000ms 左右SW Cache 命中率71%23%PWA+ (SSR优化方案) 二级页面预注册方案 前置页面,提前注册二级页面的SW,同时通过下发配置, 预加载需要缓存的资源,如html、js、cssPWA+ (SSR优化方案) 一级页面预加载方案 (客户端支持)

9、进入APP打开空的webview,通过下发配置,预加载一级页面必须的资源空白 webview 二级页面预注册方案 前置页面,提前注册二级页面的SW,同时通过下发配置, 预加载需要缓存的资源,如html、js、cssPWA+ (SSR优化方案) 1.5s - 1.28s - 1s - 0.7s 一级页面预加载方案 (客户端支持)进入APP打开空的webview,通过下发配置,预加载一级页面必须的资源 二级页面预注册方案 前置页面,提前注册二级页面的SW,同时通过下发配置, 预加载需要缓存的资源,如html、js、cssCSR 方案CSR HTML Cache (SW Cache)在渲染完成后,我们将页面的 outerHTML 取出,并通过 postmessage 方法将其传给 SWFirst Time VisitSearch in CacheReturn HTMLCSR- (HTML Cache)Second Time Visit二次进入优先显示缓存HTML更新HTML模板再次进入先显示原始HTML模板缓存带数据的HTML第三次访问会白屏一下,如何解决?CSR- (HTML Cache Update) Puppeteer 能做什么? 如

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论