带你走进在业务中的实践方案腾讯云开发者社区

注:本文需要有一定的 PWA 基础

要知道一个东西是什么,我们通常可以从它的名字入手

因此我们看下 PWA 的全称是: Progressive Web App

回答 what 这种问题,重点在于名词,因此 PWA 是一个 APP,一个独立的、增强的、Web 实现的 APP

要达到这样的目的,PWA 提供了一系列的技术 & 标准,如下图所示:

具体每一项技术是什么就不再赘述了,感兴趣的同学自行网上搜索! 下面有一个简单的 demo 可以简单体会一下:

以后我们的 web 站点可以像 app 一样,这难道不是一个令人兴奋的事情吗?

按照目前的兼容性和环境来看,大家应用最多的还是 Service Worker,因此接下来我们也是把重点放在 SW 上面

那什么是 Service Worker ?

大家都知道就不卖关子了,其实就是一个 Cache

说到 Cache,就一定会想到性能优化了,请看我们的第二部分

如何利用 Cache 来进行优化?这个基本套路应该无人不知了:

那么首次加载怎么办呢?首次加载是没有缓存资源的,所以会走到线上,所以等于没有任何优化

答案就是 Cache 的第二种常用技巧: precache(预加载)

预加载的意思就是在某个地方或特定时机预先把需要用到的资源加载并缓存

我们的做法如下图所示:

当 sw install 时,就会把这个 list 的资源全部请求并进行缓存

这样做的结果就是,无论用户第一次进入到我们站点的哪个页面,我们都会把整个站点所有的资源都加载回来并缓存

当用户跳转另外一个页面的时候,Cache 里面就有相应的资源了!

这是我们辅导课堂页面接入 sw 之后的首屏优化效果:

除了静态资源之外,我们还能缓存其他的内容吗?

答案肯定是可以的,我们还可以缓存 cgi 数据!

缓存 cgi 数据的流程和缓存静态资源的流程主要有2个差别,上图标红的地方:

页面展示2次需要考虑页面跳动的体验问题,选择权在于业务本身!

这是我们辅导上课页接入该功能后的首屏优化效果:

还能缓存什么?我们想到了直出的 html

PWA 与离线包本质上是一样的,都是离线缓存

正好,我们 PC 客户端的离线包系统年久失修,在这个契机下,我们启动了使用 PWA 替换离线包的方案!

核心流程不变,基本和缓存静态资源的流程是一致的

但是离线包系统是非常成熟的系统,要完全替换掉它还需要考虑许多方面的问题。

这里有两个方案:

我们使用第2个方案,部分代码如下:

在检测到 sw 更新之后,我们可以选择强刷,或者提示用户手动刷新页面,具体实现页面可以通过监听事件来处理

一般离线包是打进 app 的安装包一起发布的,在用户下载安装之后,离线包就已经存在于本地,因此第一次打开就能享受到离线包的缓存。

但是 sw 没有这个能力,同样我们也有两个方案:

注:这里 app 不是移动端 app,是 pc 的客户端 app

有时候我们不想使用离线缓存能力,比如在我们开发的时候

在离线包系统,通常会有一个开发者选项是【屏蔽离线包】

因此,我们可以在 dev 环境下把开关关闭即可达到屏蔽的作用

当我们发布了一个错误代码的时候,我们需要快速降级容错的能力

在离线包系统里面有个过期的功能,可以把某个版本设置过期,也就是废弃掉:

我们利用之前提到的全局开关,通过一个管理接口来设置开关的起开和关闭,即可达到快速降级的目的:

整个流程大致是这样:

请求管理接口是轮询的,这里后续有计划会改成 push,这样会更加及时,当然还要详细评估方案之后才能落实。

未来对于 PWA 还能做些什么?笔者以为有以下 2 个方面

目前通用的能力已经基本挖掘完成,但是 SW 因为它独特的特性,它能做的事情太多了,但是具体要不要这么做也是因业务而异,而且这些内容可能会很复杂,所以我称为业务深耕。

SW 什么特性?请看下面 2 张图就可以理解了

这种架构相信已经能够看出来了,没错,SW 有间件(层)的特性,那它能做的东西就太多了(虽然 SW 是用户端本地中间层)

THE END
0.中信银行深耕金融市场业务中信银行深耕金融市场业务   中信银行不断优化机制、提升能力,于2021年开始推动金融市场业务转型发展。3年来,该行同业客户深度经营取得突破性进展。   “营业净收入139.79亿元,同比增长9.83%,营收贡献度同比上升1.13个百分点。”中信银行近日公布2024年上半年业绩报告。   上半年,该行积极支持jvzq<84yyy4ds7}kpj{bpny0eqs049762;731l>4hh689>fh66824B62e2g8:;:4f2:b:8h0jvsm
1.同辉信息深耕细作三个业务场景4月27日晚,北交所上市公司同辉信息发布2022年年报及2023年一季报。2022年,公司实现营业收入3.34亿元,亏损4452.04万元;2023年一季度,公司实现营业收入4189.24万元,亏损1391.02万元。 同辉信息表示,随着行业需求逐步释放,公司业务将重返上升通道。公司将继续在XR教育、数字展馆、数字影院三个业务场景深耕细作,加大研发投入,争jvzquC41ycv/gjxvoqtf{7hqo1g0497526894@5:92;37A3jvor
2.金冠电气深耕核心业务擦亮科创底色从产品角度看,避雷器业务表现尤为突出,收入同比增长了37.63%,达到3.01亿元,占公司总营业收入的52.73%。配网产品和充电桩业务虽然收入有所下降,但依然占据了公司总营业收入的一定比例。各产品线的毛利率也保持在健康水平,其中避雷器的毛利率更是高达44.83%。 jvzquC41pg}t0lsuvqil0lto1pkxu5zm/814=57/783;A>40jzn
3.融资租赁业:深耕绿色业务开拓细分赛道融资租赁未来,新能源子公司作为越秀租赁新能源产业平台,将深耕光伏、储能和风电等新能源领域,培育专业化业务团队,打造成为新能源领域的专业产业运营商。 业内已有公司在新能源电站专业化运营方面颇有探索。《金融时报》记者了解到,中信金融租赁基于光伏和风力电站领域的经验,搭建出新能源电站资产价值体系。借助该体系,租赁公司可以jvzquC41yy}/hrscpeobnwjyu0ipo7hp1lohq~4t||r04974295u49742979a;:363>/j}rn
4.基层党建丨苏豪股份党委:党建业务深度融合扛起高质量发展新使命深耕业务 担当发展使命 苏豪股份党委始终把党建工作的着眼点和落脚点放在提高企业效益、增强企业竞争实力、实现国有资产保值增值上,努力把党建工作成效转化为企业高质量发展的独特优势。近年来,公司深耕外贸主业,聚焦茧丝绸产业链、研发智造、多样化投资、跨境电商等战略性新兴产业,积极培育经济增长点。海外生产基地充分发挥jvzquC41yy}/onjvuqnp0ls1zktxgwiqpizbk8okvwgozrsygp532;7/27324899574ivvq
5.中集集团:中集海洋工程业务深耕布局深海油气装备业务中集集团:中集海洋工程业务深耕布局深海油气装备业务Video Player is loading.00:00/00:00 Loaded: 0% 视频加载失败,请查看其他精彩视频 相关视频 猜你喜欢 00:01:33 2-3!英超冷门迭爆 11.5亿 00:01:32 我国北部湾海域最大海洋油气钻采平 00:00:07 分享模特的那些尴尬场面 00:01:25 以色列:不jvzquC41xkjfq7xkpc4dqv3ep1v0hrscpek04977/29.4:4fgvgjn6npgsqlm~83637277i0jvsm
6.完美世界新游业绩如期兑现深耕研发业务或迎质变仅仅过了3个月,完美世界的业绩就迎来了一个大跨步式的复苏。10月14日发布的三季报预告显示,完美世界21Q3单季预计实现归母净利润5.3至5.5亿元,其中游戏业务预计盈利5.4至5.6亿元。经计算,这意味着Q3环比Q2大增长了约360%。 在中国的游戏行业,完美世界属于长期坚守的精品游戏开拓者。其所开创性的3D网络游戏自研业务jvzquC41pg}t0sxvx0ipo8f14282396713<46;;2;9=74>3ujvsm
7.【电力能源党建好成果】弘扬建党精神、传承电力风貌、铸造信通(三)深耕业务,塑造品牌,打造敢于担当“突击队” 站稳“国家电网网络安全指挥枢纽”责任定位,持续推进“信通铁军·网安卫士”品牌建设,加快推进新一代网络安全平台建设,切实增强全系统态势感知、全业务安全管控、全时域攻防对抗能力。 一是树旗帜,大考一线强堡垒。持续深化“网安中心党员突击队”建设,多次承担急难险重jvzquC41yy}/enwu0qxh0ls1ukzf1ltpvgtu1oi:g3je4;>f2572fB9;6992en9c26jd57mvon
8.携9家海外企业亮相进博会!启迪之星深耕国际业务,打破疫情阻隔启迪之星深耕国际业务,打破疫情阻隔 11月5-10日,在第四届进博会首次开设的“创新孵化专区”上,启迪之星作为唯二的平台性合作伙伴之一,携9家孵化网络内的海外企业集体亮相。这些项目来自加拿大、英国、新加坡、马来西亚等国,其中iSmartWays、Clickdishes与启迪签署战略合作协议,将通过启迪之星孵化网络开展在华业务。jvzquC41pg}t0}to0eun1;5433706@6839913<3jvor