概述

处于好奇,最近我调研了一下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. GMT与Etc/GMT地区信息的时区转换

    GMT 地区信息的时区 在将来的版本中可能不再支持以下左面一列中的地区信息的时区.可能从 /usr/share/lib/zoneinfo 删除这些文件.左列中的地区信息的时区用右列中对等的时区来替换. ...

  2. 一个很有趣的示例Spring Boot项目,使用Giraphe CMS和Spring Boot

    6: 这是一个很有趣的示例Spring Boot项目,使用Giraphe CMS和Spring Boot. Giraphe是基于Spring Boot的CMS框架. https://github.co ...

  3. DCOS实践分享(4):如何基于DC/OS整合SMACK(Spark, Mesos, Akka, Cassandra, Kafka)

    这篇文章入选CSDN极客头条 http://geek.csdn.net/news/detail/71572 当前,要保证业务的市场竞争力,仅靠设计一个可用并且好看的产品,已经完全不能满足要求.全球消费 ...

  4. Dubbo中Directory解析

    Directory代表多个Invoker,可以把它看成List Directory接口 Directory接口继承了Node接口: 1234567 public interface Directory ...

  5. BZOJ_3282_Tree_LCT

    BZOJ_3282_Tree_LCT Description 给定N个点以及每个点的权值,要你处理接下来的M个操作. 操作有4种.操作从0到3编号.点从1到N编号. 0:后接两个整数(x,y),代表询 ...

  6. BZOJ_3012_[Usaco2012 Dec]First!_trie树+拓扑排序

    BZOJ_3012_[Usaco2012 Dec]First!_trie树+拓扑排序 题意: 给定n个总长不超过m的互不相同的字符串,现在你可以任意指定字符之间的大小关系.问有多少个串可能成为字典序最 ...

  7. 二逼平衡树 Tyvj 1730 BZOJ3196 Loj#106

    树状数组+主席树,模板题,不多说... #include <cstdio> #include <algorithm> #include <cmath> #inclu ...

  8. resteasy简单实例

    1.建一个maven web项目 新建一个maven项目,next,第一个框不要勾选 选择maven-archetype-webapp,建一个web项目 键入项目组织id与项目id 一般此时搭建的只是 ...

  9. Django中用户权限模块

    Django中用户权限模块 1 auth模块 auth模块是Django提供的标准权限管理系统,可以提供用户身份认证, 用户组和权限管理. auth可以和admin模块配合使用, 快速建立网站的管理系 ...

  10. mysql 使用Navicat Lite如何打开‘查询编辑器’,使用sql语句对表进行操作!

    今天第一次使用mysql,尽然连查询编辑器都找不到,研究了半天,询问了下大牛,才搞出来,准备写下来,后面方面忘记了有查找的地方,哈哈哈~~ 如何打开"查询编辑器",使用sql语句进 ...