概述

前几天了解并按照官方文档,成功实现了一个小型的 pwa demo,现在把总结记录下来,供以后开发时参考,相信对其他人也有用。

pwa

pwa 包括很多内容,我这里只介绍一部分,因为比如 Push&Notification 我并没有实际练手过。

参考资料:

Your First Progressive Web App

pwa 缓存策略

pwa app 的快速和离线体验是通过 service worker(SW) 来实现的。那到底它的缓存策略是怎样的呢?

首先,SW 有一个 CACHE_NAME,这个相当于 http 里面的 e-tag,一般通过这个来标记 SW 缓存的版本,我们通过 SW 判断 CACHE_NAME 是否发生改变,如果发生改变,我们能够自定义要进行的操作,比如删除旧版本缓存,发起 http 请求,缓存新版本。

然后,SW 不仅能缓存静态资源,还能够缓存接口返回的数据。SW 可以拦截 http 请求,然后判断缓存里面是否有这个接口缓存的数据,如果有就可以拿来使用,如果没有就再发起 http 请求来请求数据。

最后,每当我们发起 http 请求的时候,一般我们会用 SW 判断缓存里面有没有数据,有则立即使用数据,同时还可以发起 http 请求来获取最新数据;如果没有就直接发起 http 请求获取新数据。这一策略有2个好处:

  1. 假如我们用 SW 缓存了所有 http 请求的数据,那么就算是在离线情况下,app 也能够正常运行,造成了良好的离线体验。
  2. 当 SW 的缓存命中的时候,会立即适用缓存里面的数据,没有等待时间,所以 app 会很快速。
  3. 不需要担心版本问题。就算 SW 缓存的数据不是最新的,我们也可以在适用缓存的同时,发起 http 请求获取新数据,然后比较新数据和旧数据有没有改变,如果有则适用新数据(当然也可以直接适用新数据)。

SW 的生命周期

SW 有3个很重要的生命周期:

  1. install: 当 SW 下载完成之后,就会执行 install,安装 SW。注意,在这个阶段,SW 对页面是不起作用的,并不能代理 http 请求。
  2. active: 当 SW 安装完成之后,并不会立即适用,它会在下次页面刷新或者打开的时候才会适用,所以初次打开页面的时候 SW 并不能代理 http 请求。如果这个时候页面已经有老的 SW,那么老的 SW 仍然会继续运行。
  3. waiting: 在 install 和 active 之间 SW 是属于 waiting 阶段,这个严格来说并不是生命周期,因为它没有一个回调。

我们一般在 install 生命周期里面添加要缓存的内容,比如静态资源,http 路径等。然后在 active 生命周期内清除旧的缓存,最后监听 fetch 事件,代理 http 请求。

pwa 总结的更多相关文章

  1. 说说 PWA 和微信小程序--Progressive Web App

    作者:云图图链接:https://zhuanlan.zhihu.com/p/22578965来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 利益相关:微信小用户,谷歌小 ...

  2. [PWA] Keynote: Progressive Web Apps across all frameworks

    PWA: Add to home screen Angular Universal Server side rendering: for achieving better proference on ...

  3. PWA - 渐进式网络应用初认识

    Progressive Web Apps 简称PWA,是一种接近原生用户体验的渐进增强的web-app.从浏览器演进而来,沉浸式的体验,改进web的性能低下等.是Google 在2015年提出,今年才 ...

  4. 轻松把你的项目升级到PWA

    什么是PWA PWA(Progressive Web Apps,渐进式网页应用)是Google在2015年推出的项目,致力于通过web app获得类似native app体验的网站. 优点 1.无需客 ...

  5. PWA学习心得

    PWA学习心得 一.什么是PWA Progressive  Web  App , (渐进式增强 WEB 应用) 简称 PWA ,是提升WebApp的体验的一种新方法,能给用户原生应用的体验. PWA ...

  6. hexo 博客支持PWA和压缩博文

    目标网站 https://blog.rmiao.top/ PWA yarn add hexo-offline 然后在root config.yml里新增 # offline config passed ...

  7. 震撼功能:逐浪CMS全面支持PWA移动生成意指未来

    Progressive Web App, 简称 PWA,是提升 Web App 的体验的一种新方法,能给用户原生应用的体验. PWA 能做到原生应用的体验不是靠特指某一项技术,而是经过应用一些新技术进 ...

  8. 新事物学习---Chrome上使用PWA

    PWA是什么 PWA(Progressive Web Apps)是 Google 最近在提的一种 Web App 形态 (或者如 Wikipedia 所称的"软件开发方法").PW ...

  9. Angular 学习笔记 ( PWA + App Shell )

    PWA (Progressive Web Apps) 是未来网页设计的方向. 渐进式网站. Angular v5 开始支持 pwa 网站 (所谓支持意思是说有一些 build in 的方法和规范去实现 ...

  10. PWA初体验

    一.前言 现在市面上的Native  APP成千上万个,各种应用商店里面的APP琳琅满目.原生的APP下载到手机上之后,用户就可以获取一个方便的入口,体验上也十分顺畅.但是再好的事物难免有点缺点: 1 ...

随机推荐

  1. css3 伪类以及伪元素的特效

    菱形          

  2. java Class类的用法示例

    @SuppressWarnings("unchecked") public void func() throws InstantiationException, IllegalAc ...

  3. MSDN上对yield关键字的示例

    public class PowersOf2 { static void Main() { // Display powers of 2 up to the exponent of 8: , )) { ...

  4. 专心研发CPU?传Intel外包芯片组设计给祥硕

    在本届台北电脑展上,AMD除了推出7nm锐龙3000处理器之外,还发布了新一代平台X570芯片组,首发了消费级PCIe 4.0技术支持.X570芯片组因为技术难度更高,所以这一代是AMD亲自出手设计研 ...

  5. Zabbix监控Dell服务器相关硬件资源

    一.安装dell服务器硬件监控工具OMSA 1.安装dell的yum源 [root@push-- ~]# wget -q -O - http://linux.dell.com/repo/hardwar ...

  6. 调试dcc 试图将u-boot放入ocm运行碰到的问题

    1. 起因: gd->mon_len = (ulong)&__bss_end - (ulong)_start; 在u-boot.map中查找,发现__bss_end并不是u-boot.b ...

  7. Windows navcat 连接虚拟机mysql

    linux下mysql的安装与使用 https://www.cnblogs.com/shenjianping/p/10984540.html linux安装mysql教程 https://www.cn ...

  8. mysql8.0.16二进制安装

    mysql8.0.16二进制安装 环境简介操作系统:Centos 6.10 64位 目前版本:8.0.16 MySQL Community Server 二进制 安装目录:/data/mysql/my ...

  9. 模板_LCA

    // luogu-judger-enable-o2 #include<bits/stdc++.h> #define maxn 1000002 //#define int long long ...

  10. mpv播放器键盘快捷键

    作为个人认为最好用的播放器之一的MPV播放器,其开源,体积小,支持的格式多样等等非常优秀的功能.但其中也有部分麻烦的地方,因为功能太过强大,导致不知道某些功能的快捷键是什么,这就非常需要一个可以查阅的 ...