2020-05-31 06:25:25
Ele.me和Twitter的PWA改造总结如下:
Ele.me的PWA改造: 技术架构:采用Vue和多页应用架构,结合蚂蚁前端的离线包架构,优化应用交互和启动性能。 PRPL模式:通过推送资源、渲染、预加载和懒加载,提高页面加载速度。 预加载器技术:利用预加载器在页面加载时预加载下一个路由的资源,避免同步脚本导致的页面加载延迟。 多页渲染与缓存:采用多页渲染,每个页面独立加载,通过HTML发起渲染。使用Service Worker实现资源预缓存,并结合LRU缓存策略和TTL失效机制优化缓存管理。 懒加载与延迟执行:懒加载每个路由资源,避免一次性加载大量资源。通过defer标签优化脚本加载顺序,延迟执行JavaScript,减少启动时间。 App Shell策略:为每个页面添加骨架结构,利用Vue的服务器端渲染提前注入HTML片段,提高页面加载速度。
Twitter的PWA改造: 性能优化:针对React框架,通过代码分割减少首页加载时间,利用CommonsChunkPlugin抽取公用模块,提高首页渲染性能。 VirtualScroller组件:开发VirtualScroller组件,精确获取tweets尺寸,避免直接操作DOM,提高渲染性能。 延迟渲染与状态管理:利用requestAnimationFrame进行延迟渲染,优化tab切换卡顿问题。将部分状态从Redux迁移到组件内部,避免频繁更新状态,并使用reduxbatchedactions合并多个状态变化,减少渲染时间。 Service Worker技术:采用Service Worker技术,并推迟注册以避免阻塞网络请求,进一步优化性能。
总结:Ele.me和Twitter的PWA改造策略主要集中在构建体积优化、缓存利用、组件和框架代码优化等方面。两家公司充分运用浏览器特性,通过逐步累积的改进,显著提升了应用性能。