专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

天人合一物我相融,站点升级Web应用PWA(Progress

  PWA(Progressivewebapps,渐进式Web应用)使用现代的WebAPI以及传统的渐进式增强策略来创建跨平台Web应用程序,说白了,PWA可以让我们的站点以原生APP的形式运行,但相比于安装原生APP应用,访问PWA显然更加容易和迅速,还可以通过链接来分享PWA应用。
  有许多知名的网络平台已经将PWA方案落地,比如Twitter。选择增强的网站体验而不是原生应用。事实上使用PWA也确实从中获得了显而易见的益处。https:www。pwastats。com这个网站上分享了许多案例研究,PWA相比于传统应用有以下好处:
  1、减少应用安装后的加载时间,通过ServiceWorkers来进行缓存,以此来节省带宽和时间。
  2、当应用有可用的更新时,可以只更新发生改变的那部分内容。相比之下,对于一个原生应用而言,即便是最微小的改动也需要强制用户去进行热更新或者再次下载整个应用。
  3、外观和使用感受与原生平台更加融为一体应用图标被放置在主屏幕上,应用可以全屏运行等。
  凭借系统通知和推送消息与用户保持连接,对用户产生更多的吸引力,并且提高转换效率。
  诚然,从零开始研发PWA应用会有一定的成本,但如果我们本身就拥有基于Web的站点,那么就可以通过增加对应的配置文件和服务进行升级操作,直接拥有PWA应用。HTTPS服务
  首先PWA要求站点的请求方式为HTTPS,如果是生产环境,可以通过为Nginx服务器配置SSL的方式进行适配,但是线下环境测试PWA时就有点费劲了,所以通过openssl工具为本地域名localhost做自签证书:opensslreqx509outlocalhost。crtkeyoutlocalhost。keynewkeyrsa:2048nodessha256days3650subjCNlocalhostextensionsEXTconfig(printf〔dn〕CNlocalhost〔req〕distinguishednamedn〔EXT〕subjectAltNameDNS:localhostkeyUsagedigitalSignatureextendedKeyUsageserverAuth)
  产出:localhost。crt和localhost。key文件,key是私用密钥openssl格式,通常是rsa算法。csr是证书请求文件,用于申请证书,在制作csr文件的时,必须使用自己的私钥来签署申,还可以设定一个密钥。
  将文件放到项目的根目录下,随后在构建项目服务的时候配置即可,以Tornado为例:serverhttpserver。HTTPServer(app,xheadersTrue,ssloptions{certfile:。localhost。crt,keyfile:。localhost。key,})指定端口server。listen(443)
  这里通过设置ssloptions参数来导入私钥和证书,同时将端口改为HTTPS默认端口号443。如此,在本地也可以对PWA进行测试了,当然了,如果不需要本地操作,也可以跳过这步。manifest。json配置文件
  为了实现PWA应用添加至桌面的功能,除了要求站点支持HTTPS之外,还需要准备manifest。json文件去配置应用的图标、名称等信息。
  以本站为例,在站点根目录创建manifest。json文件:{name:刘悦的技术博客,shortname:刘悦的技术博客,description:刘悦的技术博客,icons:〔{src:https:v3u。cnv3uPublicimagespwa192。png,sizes:192x192,type:imagepng},{src:https:v3u。cnv3uPublicimagespwa512。png,sizes:512x512,type:imagepng}〕,backgroundcolor:FFF,themecolor:FFF,display:standalone,orientation:portrait,starturl:,scope:}
  由上至下,依次是PWA应用的名称、描述、图标文件、banner颜色、显示方式、开始页面的链接和PWA的作用域。为此我们需要提供两张不同分辨率的站点图标文件:
  ServiceWorker服务
  ServiceWorker是一个注册在指定源和路径下的事件驱动型WebWorker。它充当了Web应用程序与浏览器之间的代理服务器,进行资源在文件级别下的缓存与操控,拦截页面请求,实现在不同的情况下对不同请求的响应策略。
  ServiceWorker本质上就是一个WebWorker,因此它具有WebWorker的特点:无法操作DOM、脱离主线程、独立上下文。
  ServiceWorker还具有这些特点:只能在Https下使用、运行在浏览器后台,不受页面刷新影响、更强大的离线缓存能力(使用CacheAPI)、请求拦截能力、完全异步,不能使用同步API、持续运行,第一次访问页面后,ServiceWorker就会安装激活并持续运行,直到手动销毁。
  以本站为例,在站点根目录创建sw。js文件,注意ServiceWorker文件位置一定得在根目录,如果不在根目录也要通过重写或者url映射让其可以通过根目录路径进行访问,如:https:v3u。cnsw。js,否则浏览器会检测不到ServiceWorker服务:varCACHENAMEv3ucachev1;varurlsToCache〔,v3uPubliccsstidymin。css〕;self。addEventListener(install,function(event){event。waitUntil(caches。open(CACHENAME)。then(function(cache){console。log(Opencache);returncache。addAll(urlsToCache);})。then(function(){self。skipWaiting();}));});
  当我们为页面注册ServiceWorker后,ServiceWorker开始进行安装,安装成功之后,会在worker中触发install事件;如果安装失败,则进入废弃状态。
  如果ServiceWorker逻辑文件更新(相关资源文件变动或者内部逻辑更新等),ServiceWorker会重新安装,如果这个时候,页面依然存在激活状态下的worker(旧的ServiceWorker),那么新的worker会进入waiting状态进行等待,直到我们主动去操作worker强制其更新,或者等待用户关闭所有页面,这个时候新的worker才会进入到激活状态。
  在install事件中,我们使用caches。open方法打开cache对象,并通过cache。addAll缓存所有我们列出的文件。如果ServiceWorker存在更新,我们使用skipWaiting跳过等待,直接强制新的worker进入激活状态。
  随后,添加fetch事件:self。addEventListener(fetch,function(event){if(event。request。method!GET)return;event。respondWith(caches。match(event。request)。then(function(response){if(response){console。log(returncaches);returnresponse;}else{returnfetch(event。request)。catch(function(){if(。html。test(event。request。url))returncaches。match(htmlneterror。html);});}}))});
  这里只监听了全站的GET请求方式,即我们只希望控制资源请求。通过caches。match检查请求是否命中了缓存,如果命中,则直接返回缓存给用户,防止重复请求,节约资源。如果没有命中,则将使用fetch方法请求网络资源并返回给用户。当网络状态异常时(fetch()。catch()),返回404页面的缓存给用户,告知用户当前处于无网络状态,不能访问相关页面。指定了一些页面和文件进行缓存,我们希望用户在无网络的情况下只能访问到我们指定缓存的页面。
  当然,还有另外一种情况,我们指定了一些页面进行缓存(常用页面),当用户访问到一些不常用页面时,再对其进行缓存。这样,我们可以对资源配置进行优化,不过多的占用用户本地资源去缓存所有页面,因为PWA的缓冲本身是存储到客户端的,对于非所有用户的常用页面,按需缓存:self。addEventListener(fetch,function(event){if(event。request。method!GET)return;event。respondWith(caches。match(event。request)。then(function(response){if(response){console。log(returncaches);returnresponse;}else{returnfetch(event。request)。then(function(res){varresponseToCacheres。clone();caches。open(CACHENAME)。then(function(cache){catch。put(event。request,responseToCache);})returnres;});}}))});
  至此,ServiceWorker服务文件就撰写完成了。生产环境上线配置:
  分别将manifest。json和sw。js文件分别上传到生产环境之后,在页面的head标签中进行声明:linkrelmanifesthrefmanifest。json
  声明后,注意访问一下是否正确返回:https:v3u。cnmanifest。json
  随后在页面中注册ServiceWorker服务:
  这里首先判断当前浏览器的navigator是否支持serviceWorker,随后使用navigator。serviceWorker。register函数来注册ServiceWorker。其中,参数为要执行的worker逻辑文件路径,注意这个路径是基于origin的,而非当前文件。
  接着键入组合键,打开chrome浏览器的开发者工具:
  Mac系统上的I
  Win系统上的F12CtrlShiftI
  在Chrome的应用标签下进行检查,看应用清单有没有读出你的PWA应用信息配置文件:
  随后在serviceWorker标签下检查serviceWorker是否正确运行:
  接着访问站点,在地址栏即可添加PWA应用:
  访问效果:
  结语
  渐进式增强和响应式设计已经可以让我们构建对移动端非常友好的站点,而PWA则又在我们的身后轻轻地推了一把,黄河之水源可滥觞,星星之火正在燎原,一年以内,我们都将感到PWA的灼人温度。

坎塞洛没有不尊重曼城的任何人,我觉得我的表现可以上场近日坎塞洛在接受采访时谈到了离开曼城的事情,他表示自己没有不尊重任何队友和教练,他只是想在场上踢球。坎塞洛说道正如我已经说过的,瓜迪奥拉在世界杯后找到了一种踢球的方式,他开始更多地内维尔曼联提高票价非常奇怪,格雷泽真的想出售俱乐部吗近日曼联宣布季票票价将上涨5,内维尔担心曼联提高季票价格意味着格雷泽家族是想要继续控制俱乐部。内维尔在社交媒体上写道票价上涨非常奇怪,为什么一个在下一季开始前就要离开的卖家会发表一一加ace2一些小问题分享入手一加ace2已经好几天了,总体感受还是挺不错的,总体来说暂时没发现什么大问题,整体流畅性很不错,不知道是不是新机的原因,反正我以前用的新机都感觉很流畅,后面慢慢东西多了会慢慢变鏖战岗社区防风险除隐患保安全2月2日上午,鏖战岗社区联合团山镇安监站在辖区内开展防风险除隐患保安全活动。团山镇安监站领导深入走访鏖战岗社区辖区内铁能电气瑞宇航空永力通等企业,详细了解企业的生产情况设备运行情况布林肯台海问题不是基于主权的内政,中美关系腾挪空间接近零2022年2月24日一个特别的日子,俄乌冲突一周年,还没看到中国计划提出的和平方案,却听到美国国务卿布林肯已大放厥词,他在接受了美国大西洋月刊的线上活动时,除了大谈美国支持乌克兰之可大幅提升照片质量佳能展示AI深度学习图像处理技术CNMO新闻最近一段时间,由于OpenAI旗下的ChatGPT大火等因素,人工智能领域受到了不少外界的关注。目前来看,人工智能技术如果能够发展得非常成熟,将会对很多行业产生重大的影原解放军20军60师驻防金华的历史往事(上)历史笔记前情概要2023年春节的年初七,因笔者有每过春节必须逛街的习惯,这一天携发妻前往四牌楼,想为后续发掘地方历史(大院子女)积累点素材,印证一下所了解历史上四牌楼商铺的各自位置山东大抵的确是没钱了山东大抵是没钱了,横竖都只考察自由身球员,坐起身来点起了一支烟,这悲伤没有由来,黯然看着场上试训队员,一个是没转会费的,另一个也是没转会费的。近来总感倒春之寒,这泉水之城也有了寒意詹姆斯我想赢,我仍然拥有改变一支球队的能力前杜克大学男篮主帅前美国男篮主帅老K教练迈克沙舍夫斯基近日采访了湖人前锋勒布朗詹姆斯。关于他在打破历史得分纪录后仍然拥有的求胜欲,詹姆斯说是的,我想赢,我想赢。我仍然拥有改变一支球新风光业绩快报2022年度净利润同比增长7。29张鹏飞中国证券报中证网中证网讯(记者张鹏飞)新风光2月23日晚间发布业绩快报,公司2022年实现营业总收入12。97亿元,同比增长37。61实现归属于上市公司股东的净利润1。25亿子公司涉嫌走私被移送起诉爱普股份称判决生效后或调整以前年度损益2月23日早盘,爱普股份(603020。SH)低开低走,盘中一度跌幅近2。消息面上,2月22日晚,爱普股份(603020。SH)公告,公司占股比51的控股子公司上海盟泽于近日收到上
开播前被吹成神剧,上映后一言难尽的7部电视剧,能真诚点吗娱乐圈信奉炒作,一部剧上映前,总是想方设法创作话题,吸引眼球。什么史上超强卡司,老戏骨扎堆,神级IP改编,又一部王炸诞生只要不违反广告法,想怎么吹就怎么吹。然后就是拼命烧钱,各渠道央视宠儿成流量密码?从全网怒骂到一夜翻红,大家都欠她一个道歉一国庆期间,沉寂了很久的鲁豫,上了一期脱口秀大会,节目播出后,反响很大,至少比那英周迅当领笑员的时候强多了。不信?看看网友们抑制不住内心激动的夸赞之词就明白了你是我的神!她的共情能秋季皮肤又干又痒,擦润肤霜也没用,医生教你正确的护肤技巧近段时间,成都的天气逐渐转冷,空气也变得异常干燥,皮肤又开始出各种问题。从接诊患者的皮肤问题来看,大多都是来看皮肤干痒红的问题。秋季一到,不仅脸痒背痒胳膊痒,似乎全身都痒了。随手一孩子还能长多高?主要看4项指标3个习惯,准确度较高我家女儿9岁了,身高1米42,体重41公斤,还能长多高?这是昨天重庆的一位家长,在视频的时候问我的,随后我告诉她如果按照现在正常生长的话,大约157。妈妈特别疑惑说怎么可能?她现在你真的会夸自己的孩子吗?一味地赞美或是批评,都不足以解决孩子成长的所有问题。孩子更需要的,是父母能够站在一个平等的位置,与他们建立联结,听见他们的声音,看见他们的需求。能把夸奖的话说到别人心坎里的人,无非亲吻孩子,真的是爱孩子吗?5岁男童因感染死亡,这是怎么回事?前段时间,中国广东一名5岁左右的男孩,在参加家庭聚会时,被大伯随意亲了几下,没过多久孩子脸上开始出现很多小红疙瘩,并且全身多处发现有小红斑。家长以为是皮炎,给孩子抹了消炎膏,但过了对不起,我对人过敏如果被一只老虎咬了,你会选择求救吗?我不会。因为如果没有人救我,我只是可能会死可是一旦有人来救,我还得跟他打招呼。一个脱口秀的段子,说出了很多社恐人的心里话。社恐作为一个网梗出现,邯郸武安秋日白云山红叶霜满天武安市白云山景区,红叶色彩斑斓。通讯员姚鸿军摄当季节轮回的脚步与秋日的古城邯郸再相逢,漫山的红叶尤为鲜艳,在阳光的照耀下绚丽多彩。在武安市西部的白云山景区上,千亩黄栌树叶由绿变红,深秋常吃3白,顺应而食,廉价的蔬菜,吃出高营养的美食推荐大家深秋常吃3白,不用一杯奶茶的钱,就可以吃到高营养价值的菜深秋的季节,天气一天比一天寒冷,凉爽的天气突然变得寒冷,这个时候很多人,就开始喝各种进补取暖的汤汤水水,给身体提供抗油价调整信息今天10月14日,国内加油站调整后9295号汽油价格今天是2022年10月14日,截至目前国内成品油价格调整幅度再一次缩窄,原油变化率出于正值运行中,截至本计价周期的第3个工作日,原油综合变化率5。66,折算成每升汽柴油价格预计上调10月13日各纸厂废纸收购价格信息华东地区山东枣庄海象纸业,AB级上调30元吨,其他不变。山东潍坊汇胜纸业,废纸价格下调20元吨。江苏常熟理文纸业,一级上调40元吨,二级上调20元吨,C级上调50元吨。浙江绍兴华宇
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网