目录

PWA

Web应用 VS 本地应用

Service Worker

设计思路


浏览器三大进化路线:

  • 应用程序Web化

  • Web应用移动化

  • Web操作系统化

主要说一下第二个:Web应用移动化

对于收集设备来说,前有本地App,后有移动小程序,想要浏览器切入到移动端时相当困难的一件事,因为浏览器的运行性能时低于本地App的,并且Google也没有类似微信或者Facebook体量的用户群体

不过要想切入到移动端,让其取得和原生应用同等待遇,Google提出了PWA

PWA

PWA:"(Progressive Web App)"渐进式网页应用

  • 站在Web应用开发者来说,PWA提供了一个渐进式的过渡方案,让普通站点逐步过渡到Web应用。采取了渐进式可以降低站点改造的代价,使得站点逐步支持各项新技术,而不是一步到位

  • 站在技术角度来说,PWA技术也是一个渐进式的演化过程,在技术层面会一点点演进,比如逐渐提供更好的设备支持,不断优化更加流畅的动画效果,不断让页面的加载速度变得更快,不断实现本地应用的特性

PWA采取的是非常缓和的渐进式策略,不像以前那样激进,动不动就取代本地App、取代小程序。与之相反,而是要充分发挥Web的优势,渐进式地缩短和本地应用或者小程序的差距。

所以,PWA可以理解是:一套理念,渐进式增强Web的优势,并通过技术手段渐进式缩短和本地应用或者小程序的差距。

那么:可以通过那些手段去缩短差距呢?

Web应用 VS 本地应用

相对于本地应用,Web页面到底缺少什么?

  • 离线使用能力,在离线或者弱网络环境下基本是无法使用的。而用户需要的是沉浸式的体验,在离线或者弱网环境下能够流畅地使用是用户对一个应用地基本要求

  • 缺少消息推送能力

  • 缺少一级入口,也就是将Web应用安装到桌面,在需要地时候直接从桌面打开Web应用,而不是每次都需要通过浏览器打开

针对以上缺陷,PWA提出了两种解决方案:

  • Service Worker:试解决离线存储和消息推送

  • manifest.json:解决一级入口地问题

Service Worker

WebApp请求资源时,会先通过Service Worker,让他判断是返回Service Worker缓存地资源还是重新去网络请求资源。一切控制权交给Service Worker来处理。

设计思路

现在知道了Service Worker的主要功能是拦截请求和缓存资源

架构

前面页面循环系统的分析,知道了JavaScript和页面渲染流水线的任务都是页面主线程上执行的,如果一段JavaScript执行时间过久,那么会阻塞主线程,使得渲染一帧的时间边长,从而让用户产生卡顿的感觉,这对用户来说体验是非常不好的。

为了避免JavaScript过多占用页面主线程时长的问题,浏览器实现了Web Worker的功能。

Web Worker:让JavaScript能够运行在页面主线程之外,不过由于Web Worker中没有当前页面的DOM环境,所以在Web Worker中只能执行一些和DOM无关的JavaScrip脚本,并通过postMessage方法将执行的结果返回给主线程。

让其运行在主线程之外就是Service Worker来自Web Worker的一个核心思想”。不过Web Worker是临时的,每次JavaScript脚本执行完成之后都会退出,执行结果也不能保存下来,如果下次还有同样的操作,还得重新再来一遍。所以Service Worker需要Web Worker的基础上加上存储功能。

另外,由于Service Worker还需要为多个页面提供服务,所以不能把Service Worker和单个页面绑定起来。

目前,Service Worker是运行在浏览器进程中的,因为浏览器进程生命周期的最长的,所以在浏览器的生命周期内,能够为所有页面提供服务。

消息推送

安全

Service Worker考虑吧到安全,采用的是HTTPS协议,因为通信数据都会经过加密,即便拦截了数据,也无法破解数据内容,而且HTTPS还有校验机制,通信双方很容易知道数据是否被篡改。

除此之外安全方面还有:Web页面默认的安全策略、储入同源策略、内容安全策略(CSP)等

渐进式网页应用(PWA)相关推荐

  1. 分享PWA(渐进式网页应用)

    PWA:英文全称(Progressive Web Apps):渐进式web应用 体验 如果你之前没有了解过 PWA,大概率可能也不明白这是个什么效果,没有关系,我们直接看一个 PWA 应用示例,我们打 ...

  2. PWA(渐进式网页应用) + SPA(单页应用)的一个简单的思考

    前言 以前听到的并不是PWA(渐进式网页应用)这么专业的形容词.那个时候其实已经了解到google再做一个东西,之前是这么形容的:不需要操作系统,软件直接在硬件上跑.Surprised,自闭中- 现在 ...

  3. 迁移Hexo博客到Google渐进式Web应用(PWA)

      如果说通过TravisCI实现博客的自动化部署,是持续集成这个概念在工作以外的一种延伸,那么今天这篇文章想要和大家分享的,则是我自身寻求技术转型和突破的一种挣扎.前段时间Paul同我聊到Web技术 ...

  4. 您的公司能从渐进式网页应用中受益吗?

    \ 要点 \\ 渐进式网页应用同时具有网站和移动应用的功能.\\t 它们既可在线又可离线工作,在两个方面都可以充分发挥作用.\\t 它们的性能比网站和移动应用更稳定.\\t 有些浏览器自动提示用户安装 ...

  5. php网页安装pwa,怎样使用@angular/cli V6.0开发PWA应用

    这次给大家带来怎样使用@angular/cli V6.0开发PWA应用,使用@angular/cli V6.0开发PWA应用的注意事项有哪些,下面就是实战案例,一起来看一下. 什么是PWA PWA(P ...

  6. 微信小程序打包的原理_说说微信小程序和它的打包加密算法

    B站传送门​www.bilibili.com 不愿看视频的可以看下面的视频文字稿 不知道你有没有发现这样一个现象,当年用QQ的人越来越多的转战到了微信.当时那群留着爆炸头用着£吙星妏☆★的孩子把自己非 ...

  7. 渐进式应用程序Progressive Web Applications(PWA)全面指南

    原文地址: An Extensive Guide To Progressive Web Applications 快速摘要 在本文中,我们将了解浏览旧的非PWA网站的用户的痛点以及PWA使网络变得更好 ...

  8. Blazor WebAssembly 渐进式 Web 应用程序 (PWA) 离线处理数据

    Window.localStorage 只读的localStorage 属性允许你访问一个Document 源(origin)的对象 Storage:存储的数据将保存在浏览器会话中. 存储在 loca ...

  9. 【PWA学习与实践】(3) 让你的WebApp离线可用

    <PWA学习与实践>系列文章已整理至gitbook - PWA学习手册,文字内容已同步至learning-pwa-ebook.转载请注明作者与出处. 本文是<PWA学习与实践> ...

最新文章

  1. easyui-menu 解决disableItem不能禁用绑定事件的方法
  2. nodejs系列-翻译http
  3. 为vim编辑器增加行号功能
  4. CSRFGuard工具介绍
  5. 精读《怎么用 React Hooks 造轮子》
  6. 11 月全球 Web 服务器调查报告:nginx 表现最佳
  7. 2021-2025年中国地下装载机行业市场供需与战略研究报告
  8. java线程main异常,‘java.lang.NoSuchMethodError:main的原因’线程中的异常“main”’...
  9. 前端使用 geetest 行为验证 web-部署教程
  10. 9.XSD 复合类型指示器
  11. Linux下Nginx安装
  12. Android数据库增删改查
  13. 明翰英语教学系列之雅思篇V1.9(持续更新)
  14. 操作系统下spinlock锁解析、模拟及损耗分析
  15. win10打开谷歌浏览器chrome,并进入kiosk模式
  16. ActiveMQ学习笔记(二十三)Comsumer高级特性2
  17. cad修改快捷键_CAD新手攻略:修剪(TRIM)CAD命令快捷键的使用技巧
  18. java的db是什么_java db
  19. 文件夹删除了如何恢复?轻松恢复教学
  20. 我的推荐系统入门经验~

热门文章

  1. 单片机寄存器的位操作
  2. 笔试题-2023-思特威-FPGA【纯净题目版】
  3. 2018校园招聘科大讯飞校招笔试题
  4. 联邦学习——Base + Personalization Layers的另一种玩法
  5. html语言head的作用,html中的head标签在哪里找?head标签的作用总结
  6. html学习系列教程7-td标签、tr标签
  7. Vite 开发快速入门
  8. tinyxml2简单的创建、增、删、改、查
  9. Openwrt 手动安装 netdata 插件
  10. 麒麟短线王至尊版 软件及指标 应用!