概述

处于好奇,最近我调研了一下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. http请求 405错误 方法不被允许 (Method not allowed)

    由于自己疏忽,导致请求错误405,然后前端数据传输没错,百度大都说跟post提交方式有关,改成get还是报错,检查才知道,controller中忘记写@requestMapping("/XX ...

  2. Spring Data Jpa 实现分页(Spring MVC+easyui)

    spring data jpa很好的对dao层进行了封装,这篇文章主要来写的是实现easyui datagird数据分页,由于各个UI参数不大一样,所以如果使用的是其他UI,得稍作修改.需要说明的是我 ...

  3. Windows下Pytesser安装

    安装流程   详细步骤 安装PIL 32位机器:去到PIL官网进行安装 64位机器:建议使用Pillow代替PIL,PIL官网的安装包在64位机器下无法找到,安装Pillow也非常简单,使用pip就可 ...

  4. Selenium webdriver定位iframe里面元素

    在查找元素过程中,直接通过id或者xpath等找不到元素,查看页面源代码发现元素是属于iframe里,例如: <div class="wrap_login"> < ...

  5. delete.go

    package api import (     "net/http"     "fmt"     "io/ioutil"     &quo ...

  6. BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图

    BZOJ_3996_[TJOI2015]线性代数_最大权闭合子图 Description 给出一个N*N的矩阵B和一个1*N的矩阵C.求出一个1*N的01矩阵A.使得 D=(A*B-C)*A^T最大. ...

  7. BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路

    BZOJ_1579_[Usaco2009 Feb]Revamping Trails 道路升级_分层图最短路 Description 每天,农夫John需要经过一些道路去检查牛棚N里面的牛. 农场上有M ...

  8. python环境下实现OrangePi Zero寄存器访问及GPIO控制

    最近入手OrangePi Zero一块,程序上需要使用板子上自带的LED灯,在网上一查,不得不说OPi的支持跟树莓派无法相比.自己摸索了一下,实现简单的GPIO控制方法,作者的Zero安装的是Armb ...

  9. 测试修改hosts文件py小工具

    import sys,osparm_list=sys.argvHOST_PATH=r'C:\liuliang\flask_test\test\hosts'class HostFile(object): ...

  10. 基于Java实现红黑树的基本操作

    首先,在阅读文章之前,我希望读者对二叉树有一定的了解,因为红黑树的本质就是一颗二叉树.所以本篇博客中不在将二叉树的增删查的基本操作了,需要了解的同学可以到我之前写的一篇关于二叉树基本操作的博客:htt ...