PWA是什么?

Progressive Web App 渐进式web应用程序,简单来说,就是可以让你的WEB App,带来与原生App相媲美的用户体验。。

为什么要用PWA?

简单来说,是为了web应用更好的用户体验。

  • 当你的web页面处于离线或者弱网情况,可以调用预先缓存资源,使你的应用正常加载。
  • 部分资源无需经过网络,页面秒开。
  • 你的页面可以被搜索引擎收录。
  • 可以通过message进行离线消息推送。
  • 应用可以被添加到手机桌面,像原生应用一样可以全屏,推送

怎么用PWA?

  • 使用HTTPS
  • 使用Service Worker技术(下文有详细介绍),实现离线加载技术
  • 把我们需要离线的文件放到App Mainfest文件代码中

PWA目前浏览器支持情况点击直达兼容性查询页

不同平台分别最适合体验 PWA 应用的浏览器:

Android:Chrome 浏览器

iOS:Safari 浏览器

Windows 10:Edge 浏览器 / Chrome 浏览器 / Stack 浏览器

macOS:Chrome 浏览器 / Stack 浏览器

Linux:Chrome 浏览器

关于pwa图文介绍以及使用体验的资料可参考

全平台的轻量体验:PWA 使用指南及应用推荐

ServiceWorkerGlobalScope API

WEB App Mainfest

Service Worker 是什么?

Service Worker 是浏览器独立于当前网页,在后台运行的一个脚本。作用有以下几点

  • 拦截和处理网络请求,刷新页面可以通过缓存,页面秒开
  • 使用Service Worker 在后台运行,实现处理大规模后台数据的功能,不影响前端页面,数据处理同时可以和前端页面进行通信
  • 仅在激活情况下,才会针对系统事件抓取资源,非激活情况下,不占用系统资源

Service Worker工具备注,使用下面两个指令,可以查询到我们已经启动的,和浏览器内置的Service Worker

  • chrome://serviceworker-internals/
  • chrome://inspect/#service-workers

使用service-worker缓存页面内容

首次加载





点击刷新以后

使用service-worker发送消息

使用第一个窗口发送消息

我们在第二和第三个窗口都看到了第一个窗口发送的消息







关于上图 service-worker缓存页面,以及不同页面发送message代码地址

https://gitee.com/tangdd369098655/service_worker.git

查看当前网站是用哪个文件注册的Service Worker

如何测试你的页面性能?Lighthouse 前端性能优化测试工具

  • 分析Web应用,收集各种应用指标,并进行评估,以此我们可以根据评估结果进行针对性优化,不断提升用户体验
  • 目前官方提供了4种使用方式: - Chrome 开发者工具(DevTools) - Chrome 扩展 - Node CLI - Node Module
  • 详细文档可以参考[https://github.com/GoogleChrome/lighthouse](Lighthouse github)

使用Chrome 开发者工具,接下来我们以手机淘宝为例,来看一下页面性能

打开开发者工具-点击 generate report,它会对页面进行相关性能的检查,最终生成报告

切换语言~~

各个方面得分情况

PWA分析报告

  • 经过分析,我们可以得到 该案例关于PWA分析 如下结果

PWA-H5 Web App优化探索之路(Service Worker,Lighthouse)的更多相关文章

  1. PWA(Progressive Web App)入门系列:(一)PWA简单介绍

    前言 PWA做为一门Google推出的WEB端的新技术,长处不言而喻.但眼下对于相关方面的知识不是非常丰富.这里我推出一下这方面的新手教程系列.提供PWA方面学习. 什么是PWA PWA全称Progr ...

  2. [PWA] Add web app to your Home Screen

    Clone: Link Modify the structure: Move css, js, image, index.html to an 'app' folder. manifest.json: ...

  3. PWA全称Progressive Web App,即渐进式WEB应用?

    一个 PWA 应用首先是一个网页, 可以通过 Web 技术编写出一个网页应用. 随后添加上 App Manifest 和 Service Worker 来实现 PWA 的安装和离线等功能解决了哪些问题 ...

  4. Service Worker的应用

    Service Worker的应用 Service worker本质上充当Web应用程序.浏览器与网络(可用时)之间的代理服务器,这个API旨在创建有效的离线体验,它会拦截网络请求并根据网络是否可用来 ...

  5. PWA渐进式web应用

    PWA(Progressive Web App)是一种理念,使用多种技术来增强web app的功能,可以让网站的体验变得更好,能够模拟一些原生功能,比如通知推送.在移动端利用标准化框架,让网页应用呈现 ...

  6. JavaScript是如何工作的:Service Worker的生命周期及使用场景

    摘要: 理解Service Worker. 原文:JavaScript 是如何工作的:Service Worker 的生命周期及使用场景 作者:前端小智 Fundebug经授权转载,版权归原作者所有. ...

  7. Progressive web app理念及发展前景

    前一段时间微信推出微信小程序进行公测,着实火了一把,博得了大众的眼球,不明真相的吃瓜观众们纷纷围观,所谓的“微信小程序”,通俗的讲就是一种不需要下载安装即可使用的应用程序,脱离于app商店依托于浏览器 ...

  8. 转《service worker在移动端H5项目的应用》

    1. PWA和Service Worker的关系 PWA (Progressive Web Apps) 不是一项技术,也不是一个框架,我们可以把她理解为一种模式,一种通过应用一些技术将 Web App ...

  9. service worker在移动端H5项目的应用

    1. PWA和Service Worker的关系 PWA (Progressive Web Apps) 不是一项技术,也不是一个框架,我们可以把她理解为一种模式,一种通过应用一些技术将 Web App ...

随机推荐

  1. NLP之基于Transformer的句子翻译

    Transformer 目录 Transformer 1.理论 1.1 Model Structure 1.2 Multi-Head Attention & Scaled Dot-Produc ...

  2. Go实现栈与队列基本操作

    @ 目录 一 前言 二 实现栈与队列基本操作 2.1 栈基本操作 2.2 队列基本操作 三 用栈实现队列 3.1 理论 3.2 算法题 3.3 思路 3.4 代码部分 四 用队列实现栈 4.1 理论 ...

  3. Java安全之CC2

    前言 由于在2015年底commons-collections反序列化利⽤链被提出时,Apache Commons Collections有以下两个分⽀版本: commons-collections: ...

  4. Apache ShenYu 集成 RocketMQ 实时采集海量日志的实践

    本文作者:胡泰室, 快手Java开发工程师. ​ 认识Apache ShenYu(神禹) 网关最重要的是流量治理,而流量治理与大禹治水有很多相似的地方,因此,网关的流量治理项目被命名为神禹. Shen ...

  5. Ant Design Pro:Layout 组件——嵌套布局

    在   BasicLayout.jsx   文件中修改 <ProLayout layout="topmenu" className="chenshuai2144&q ...

  6. Kubernetes核心技术-Controller

    Kubernetes核心技术-Controller 内容 什么是Controller Pod和Controller的关系 Deployment控制器应用场景Deployment控制器应用 yaml文件 ...

  7. 在业务逻辑中,经常会有父组件调用子组件方法的情况,vue2.0 和 vue3.0 的使用中有些不一样,在这里总结下。

    在业务逻辑中,经常会有父组件调用子组件方法的情况,vue2.0 和 vue3.0 的使用中有些不一样,在这里总结下. vue2.0 中的使用方法 父组件: <template> <d ...

  8. 如何使用zx编写shell脚本

    前言 在这篇文章中,我们将学习谷歌的zx库提供了什么,以及我们如何使用它来用Node.js编写shell脚本.然后,我们将学习如何通过构建一个命令行工具来使用zx的功能,帮助我们为新的Node.js项 ...

  9. elasticsearch 聚合之 date_histogram 聚合

    目录 1.背景 2.bucket_key如何计算 3.前置知识 4.日历和固定时间间隔 4.1 Calendar intervals 日历间隔 4.2 Fixed intervals 固定间隔 5.数 ...

  10. 【Java EE】Day13 Web概念回顾、Tomcat、Servlet

    一.Web相关概念的回顾 1.软件架构 C/S B/S 2.资源分类 静态资源 所有用户访问得到相同结果 三剑客 浏览器通过静态解析引擎将从服务器接收到的静态资源显示到页面上 动态资源 不同用户访问得 ...