概述

处于好奇,最近我调研了一下pwa和service worker,有些新的,记录下来,供以后开发时参考,相信对其他人也有用。pwa主要是通过service worker实现的,它主要包括桌面图标,离线缓存和消息推送这三个方面。

注意:开启service worker需要https环境,详细搭建流程可以看我上一篇博文。

service worker的离线缓存可以使用封装好的sw-precache库实现,其它功能可以用sw-toolbox库实现;另外还有一个新的库workbox-sw可以取代这2个库。

参考资料:

Service Workers 和离线缓存

Web Push

mdn Using Service Workers

RE0:在Vue里用Service Worker来搞个中间层(React同理)(超详细)

桌面图标

实现桌面图标需要项目中有service worker和manifest文件。

其中pc端不支持manifest文件,ios移动端也不支持,只有安卓移动端才支持manifest文件。

离线缓存

service worker有这样一条特性,就是它会拦截所有的http请求,所以在使用service worker的时候需谨慎。

并且,service worker在pc和移动包括ios上面都已经有良好的支持了。

另外,service worker还有离线缓存的api可以缓存数据,可以在拦截http请求后判断是否需要使用离线数据,也可以设置以什么方式使用离线数据。

消息推送

service worker其实在本地进程中开了一个本地服务器,然后可以通过这个服务器来做许多有意思的事情,比如消息推送。

消息推送的原理是,在service worker创建的时候就给远程推送服务器发送一个标识,并且监听推送事件,然后远程推送服务器在需要推送的时候就给标识列表的所有服务器发送推送信息,然后service worker就可以接收这些推送信息,利用h5的notification api显示推送信息。

其它

由于service worker在浏览器本地开了一个服务器(是在进程里面,可以不会因为浏览器关闭而关闭),所以它还能做另外一些激动人心的事情

  1. sw服务器中间层。一般来说,很多项目会使用nodejs搭建一个数据中间层处理数据,但是现在可以把这个中间层放到浏览器的sw里面。

  2. 缓存自动更新,因为我们的数据都是通过api请求的,如果缓存这些数据就不能更新拿到最新数据了,但是通过sw就可以在需要更新的时候接收远程服务器的更新推送,然后拦截http请求,给有需要的接口重新发送http请求,给不需要的接口就用缓存的数据。

  3. sw处理业务数据。大数据相关的项目,一般在接口方面需要先进行很多和业务数据相关的处理,如果在项目中处理的话会很繁琐,现在可以拿到sw里面处理。

调研pwa和sw的更多相关文章

  1. [PWA] 8.Unobtrusive update: Delete old cache and only keep one, hard refresh to let new SW to take control

    So once you modify the code, service worker will auto create a new one and it won't take control ove ...

  2. Chrome DevTools 调研笔记

    1  说明 此篇文章针对Chrome DevTools常用功能进行调研分析.描述了每个功能点能实现的功能.应用场景和详细操作. 2  Elements 2.1  功能 检查和实时更新页面的HTML与C ...

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

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

  4. PWA学习心得

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

  5. 前端应该了解的PWA

    一.传统web 应用 当前web应用在移动时代并没有达到其在桌面设备上流行的程度,下面有张图来对比与原生应用之间的差别. 究其原因,无外乎下面不可避免的几点: 移动设备网络限制-不可忽略的加载时间 w ...

  6. 为 VUE 项目添加 PWA 解决发布后刷新报错问题

    为什么要给 VUE 项目添加 PWA 为什么要添加?因为不管是部署在 IIS,还是 nginx,每次应用部署后,再次访问因为旧的 js 已经不存在,所以页面访问的时候会整个报错,报错的结果就是一个白屏 ...

  7. 网站PWA升级

    前面的话 渐进式网络应用 ( Progressive Web Apps ),即我们所熟知的 PWA,是 Google 提出的用前沿的 Web 技术为网页提供 App 般使用体验的一系列方案.PWA 本 ...

  8. PWA的探索与应用

    本文由云+社区发表 PWA(Progressive Web App)起源背景 传统的Web网页存在以下几个问题: 进入一个页面必须要记住它的url或者加入书签,入口不便捷: 没网络就没响应,不具备离线 ...

  9. 干货 | 10分钟玩转PWA

    关于PWA PWA(Progressive Web App), 即渐进式web应用.PWA本质上是web应用,目的是通过多项新技术,在安全.性能.体验等方面给用户原生应用的体验.而且无需像原生应用那样 ...

随机推荐

  1. html5中viewport与meta详解

    网上解释手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中 ...

  2. html总结01

    lesson01~lesson02基础 <!DOCTYPE html> <html lang="en"> <!-- ################# ...

  3. ubuntu16.04开机循环输入密码无法进入桌面的解决办法

    前些天碰到一个头疼的问题,启动我的ubuntu之后,输入密码闪屏一下,又需要输入密码!!!于是再输还要再输!!!!! 经过百度一翻后终于找到原因和解决办法. 原来是我之前在profile文件里配置了一 ...

  4. 一类SG函数递推性质的深入分析——2018ACM陕西邀请赛H题

    题目描述 定义一种有根二叉树\(T(n)\)如下: (1)\(T(1)\)是一条长度为\(p\)的链: (2)\(T(2)\)是一条长度为\(q\)的链: (3)\(T(i)\)是一棵二叉树,它的左子 ...

  5. BZOJ_1026_[SCOI2009]windy数_数位DP

    BZOJ_1026_[SCOI2009]windy数_数位DP 题意:windy定义了一种windy数.不含前导零且相邻两个数字之差至少为2的正整数被称为windy数. windy想知道, 在A和B之 ...

  6. C#进度框

    1.方法一:使用线程 功能描述:在用c#做WinFrom开发的过程中.我们经常需要用到进度条(ProgressBar)用于显示进度信息.这时候我们可能就需要用到多线程,如果不采用多线程控制进度条,窗口 ...

  7. Linux vim常用命令

    什么是 vim? Vim是从 vi 发展出来的一个文本编辑器.代码补完.编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用. 简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是 ...

  8. 查询APP Store已发布过的版本记录

    1.国内APP使用 酷传 搜索,即可查询到版本记录 2.国外的APP 无法通过国内软件进行搜索,可在App store中直接查询.步骤如下:

  9. 【ODI】| 数据ETL:从零开始使用Oracle ODI完成数据集成(三)

    资料库的创建.体系结构的创建.模型反向工程都已经完成了,下面就是创建以及执行接口来完成工作了. 浏览前两节请点击: [ODI]| 数据ETL:从零开始使用Oracle ODI完成数据集成(一) [OD ...

  10. 【JVM虚拟机】(5)---深入理解JVM-Class中常量池

    深入理解Class---常量池 一.概念 1.jvm生命周期 启动:当启动一个java程序时,一个jvm实例就诞生了,任何一个拥有main方法的class都可以作为jvm实例运行的起点. 运行:mai ...