PWA-H5 Web App优化探索之路(Service Worker,Lighthouse)

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图文介绍以及使用体验的资料可参考
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)的更多相关文章
- PWA(Progressive Web App)入门系列:(一)PWA简单介绍
前言 PWA做为一门Google推出的WEB端的新技术,长处不言而喻.但眼下对于相关方面的知识不是非常丰富.这里我推出一下这方面的新手教程系列.提供PWA方面学习. 什么是PWA PWA全称Progr ...
- [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: ...
- PWA全称Progressive Web App,即渐进式WEB应用?
一个 PWA 应用首先是一个网页, 可以通过 Web 技术编写出一个网页应用. 随后添加上 App Manifest 和 Service Worker 来实现 PWA 的安装和离线等功能解决了哪些问题 ...
- Service Worker的应用
Service Worker的应用 Service worker本质上充当Web应用程序.浏览器与网络(可用时)之间的代理服务器,这个API旨在创建有效的离线体验,它会拦截网络请求并根据网络是否可用来 ...
- PWA渐进式web应用
PWA(Progressive Web App)是一种理念,使用多种技术来增强web app的功能,可以让网站的体验变得更好,能够模拟一些原生功能,比如通知推送.在移动端利用标准化框架,让网页应用呈现 ...
- JavaScript是如何工作的:Service Worker的生命周期及使用场景
摘要: 理解Service Worker. 原文:JavaScript 是如何工作的:Service Worker 的生命周期及使用场景 作者:前端小智 Fundebug经授权转载,版权归原作者所有. ...
- Progressive web app理念及发展前景
前一段时间微信推出微信小程序进行公测,着实火了一把,博得了大众的眼球,不明真相的吃瓜观众们纷纷围观,所谓的“微信小程序”,通俗的讲就是一种不需要下载安装即可使用的应用程序,脱离于app商店依托于浏览器 ...
- 转《service worker在移动端H5项目的应用》
1. PWA和Service Worker的关系 PWA (Progressive Web Apps) 不是一项技术,也不是一个框架,我们可以把她理解为一种模式,一种通过应用一些技术将 Web App ...
- service worker在移动端H5项目的应用
1. PWA和Service Worker的关系 PWA (Progressive Web Apps) 不是一项技术,也不是一个框架,我们可以把她理解为一种模式,一种通过应用一些技术将 Web App ...
随机推荐
- NLP之基于Seq2Seq的单词翻译
Seq2Seq 目录 Seq2Seq 1.理论 1.1 基本概念 1.2 模型结构 1.2.1 Encoder 1.2.2 Decoder 1.3 特殊字符 2.实验 2.1 实验步骤 2.2 算法模 ...
- 6.-Django设计模式及模版层
一.MVC (java等其他语言) MVC代表Model-view-Contorller(模型-视图-控制器)模式 M模型层主要用于对数据库层的封装 V视图层用于向用户展示结果 C控制器用于处理请求. ...
- Windows 环境搭建 PostgreSQL 逻辑复制高可用架构数据库服务
本文主要介绍 Windows 环境下搭建 PostgreSQL 的主从逻辑复制,关于 PostgreSQl 的相关运维文章,网络上大多都是 Linux 环境下的操作,鲜有在 Windows 环境下配置 ...
- awk变量
awk变量 awk参数 参数 解释 -F 指定分割字段符 -v 定义或修改一个awk内部的变量 -f 从脚本文件中读取awk命令 对于awk而言,变量分为 内置变量 自定义变量 内置变量 解释 FS ...
- 浅入浅出 1.7和1.8的 HashMap
前言 HashMap 是我们最最最常用的东西了,它就是我们在大学中学习数据结构的时候,学到的哈希表这种数据结构.面试中,HashMap 的问题也是常客,现在卷到必须答出来了,是必须会的知识. 我在学习 ...
- webRTC demo
准备: 信令服务 前端页面用于视频通话 demo github 地址. 前端页面 为了使 demo 尽量简单,功能页面如下,即包含登录.通过对方手机号拨打电话的功能.在实际生成过程中,未必使用的手机号 ...
- 第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令
目录 3 安装配置 3.1 安装GCC 3.2 安装libevent 3.3 安装libfastcommon 3.4 安装FastDFS 3.5 安装fastdfs-nginx-module 3.5 ...
- 【炫丽】从0开始做一个WPF+Blazor对话小程序
大家好,我是沙漠尽头的狼. .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台. 本文演示如何在WPF中使用Blazor开发漂亮的UI,为客户端开发注入新活力. 注 要使WPF支持Blazo ...
- 如何使用虚拟机下载和安装Centos
首先先下载虚拟机进行安装我这里使用的是 VMware Workstation Player 当前版本为16.这个是免费使用的可以不需要许可证就能长期使用了 官网VMware Workstation P ...
- javaSE--核心之一:IO流
Java IO流框架结构: IO的主要内容包括输入.输出两种IO流,这两种流中又分为字节流和字符流,字节流是以字节为单位来处理输入.输出流,而字符流是以字符为单位来处理输入.输出流. InputStr ...