概述

处于好奇,最近我调研了一下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. adb常用操作命令

    1.adb简介:    adb,即 Android Debug Bridge.通过这个工具和android进行交互操作 2.adb命令格式:    adb [-d|-e|-s <serialNu ...

  2. MyBatis-Spring中间件逻辑分析(怎么把Mapper接口注册到Spring中)

    1.      文档介绍 1.1.      为什么要写这个文档 接触Spring和MyBatis也挺久的了,但是一直还停留在使用的层面上,导致很多时候光知道怎么用,而不知道其具体原理,这样就很难做一 ...

  3. vue简介

    vue的介绍 vue官网说:Vue.js(读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. vue的优点 1.易用 ...

  4. python中 __cmp__

    对 int.str 等内置数据类型排序时,Python的 sorted() 按照默认的比较函数 cmp 排序,但是,如果对一组 Student 类的实例排序时,就必须提供我们自己的特殊方法__cmp_ ...

  5. 转载:selenium webdriver定位不到元素的五种原因及解决办法

    1.动态id定位不到元素for example:        //WebElement xiexin_element = driver.findElement(By.id("_mail_c ...

  6. 在Windows Server 2008 R2下搭建jsp环境(二)-mysql的下载安装

    个人推荐java开发过程中的数据库首选MYSQL,MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL是一种关联数据库管理系统,关联数据库将数据保 ...

  7. I/O----复制文本文件

    文件 "我的青春谁做主.txt" 位于 D 盘根目录下,要求将此文件的内容复制到 C:/myPrime.txt 中. package io.day03; import java.i ...

  8. lookup_peer.go

    , fmt.Sprintf("LOOKUP connecting to %s", lp.addr))     conn, err := net.DialTimeout(" ...

  9. bzoj3812&uoj37 主旋律

    正着做不好做,于是我们考虑反着来,如何计算一个点集s的答案呢,一定是所有的方案减去不合法的方案,不合法的方案一定是缩完点后是一个DAG,那么就一定有度数为0的scc,于是我们枚举s的子集,就是说这些点 ...

  10. BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP

    BZOJ_1827_[Usaco2010 Mar]gather 奶牛大集会_树形DP 题意:Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来 ...