为了帮助开发团队创造最好的用户体验,我们拆解出了这一份清单,其中包括了我们所能想到的一个基准版PWA该有的所有点,以及如何进一步做出一个体验更完美的模范版PWA的重要细节。...响应式Web设计》 任何应用安装提示都不会过度使用 确认方法:检查PWA加载时不使用应用程序安装插页式广告 改善方法: ●应该只有一个顶部或底部的应用安装横幅●将PWA添加到用户的主屏幕后...应用程序在离线时不应比缓慢的连接感觉更快 改善方法: 尽可能使用缓存优先响应。也可以查看我们的服务工作者库,使得实现这些模式更容易。...(服务工作者库地址: https://developers.google.com/web/tools/service-worker-libraries/) 站点适当地通知用户何时离线 确认方法...不是填写传统的表单,验证用户是否能够通过触发本地安装的支付App轻松完成支付。 改善方法: 按照我们的付款请求API集成指南。
PWA 服务了。...清除缓存 安装与卸载 在电脑端的 Edge 和 Chrome 其安装提示都是在地址栏右边显示一个小按钮,在首次打开网站时会多显示几秒几个诸如 “安装” 的提示文字。...下图是在 Edge 点击安装按钮后的效果。 安装提示 安卓系统因使用浏览器的差异,表现也不尽相同,下图使用的是 MIUI 自带的系统浏览器(暗黑模式)。...: 软件注册表 根据注册表信息,打开软件安装目录,我们可以看到如下的目录结构: 目录结构 也就是说 PWA 的 Windows 安装被打包为了 Windows Store App,除了可以通过浏览器来管理外...3.安卓的话,安装的触发还是建议使用系统自带的浏览器打开,手机若使用 edge 或者 chrome,需要授权给应用创建桌面快捷方式的权限。
,App成为了我们生活中不可或缺的一部分,而对于实体业务也是如此,现在各行业都在推出自己的App,但有没有人想过这样一种场景,如果自己的潜在客户还没有安装你的App亦或是即便安装但因为客户的手机存储空间紧张而卸载掉了你的...最重要的是,渐进式Web应用程序在手机上创建方式也很简单,因为它们只是对你网站的增强,当有人在第一次访问你的网站时,PWA的功能在经过你授权后就会自动为你创建在手机上。...如果浏览器检测到网站存在PWA清单文件,Chrome会自动出现“添加到主屏幕”按钮。如果用户点击同意,该图标将被添加到主屏幕,并且将安装PWA。 ?...在这种情况下,self-property 代表窗口对象(即你的浏览器窗口)。 添加到主屏幕按钮 "添加到主屏幕按钮" 允许用户在其设备上安装PWA。...为了真正用这个按钮安装PWA,你必须在SW中定义一个fetch事件处理程序。让我们在sw.js中解决这个问题。
背景 虽然原生应用在我们的日常生活中很受欢迎,但仍有很多问题亟待解决,例如: 用户在从原生应用获取服务之前,往往需要经历下载->安装->注册应用的过程。...为了提供与原生应用程序相同的服务,开发人员可能需要为不同平台维护重复的产品。 解决上述问题,曾经有研发人员认为,Web 可以避免这些问题,但到目前为止 Web 仍然不完美。...小程序供应商定义了类似的 UI(用户界面)元素,这些元素在 HTML 中并不总是具有直接等效的元素。 在服务方面,PWA 和小程序开发者可以访问具有相同目的和等效功能的 API,但不遵循确切的规范。...小程序供应商通过其渠道定义了面向应用发布和分发管理的专有 API。其他专用 API 与具体场景和运行平台相关联。例如,使用设置提醒、接听电话和触发警告的服务。...PWA 依赖于标准的 Web API,而小程序实现非标准的 API 以最大限度地发挥平台的功能,例如特定于设备的功能和供应商专有的服务。
为了帮助团队尽可能的提升体验,我们整理了这个checklist,其涵盖了所有我们认为构建一个基础PWA所需的,以及通过提供更好的离线体验,达到更快的交互和关心更多的重要细节,来进一步构建一个高级的PWA...你也可以使用PRPL模式和像PageSpeed Module的服务器端工具进行研究。...应用安装提示不要被过度使用 测试 检查加载完成时PWA没有使用应用安装广告 修复 应该只有一个顶部或者底部应用安装横幅 在PWA被添加到用户的主屏后,任何顶部/底部横幅都应该被移除 拦截添加到主屏提示...缓存 站点网络请求优先使用缓存 测试 把网络模拟调至最低值,开始运行应用 然后,把网络模拟调制离线,再运行。在离线状态下,相比于慢连接应用应该不会有太大差别 修复 在可行的地方使用缓存优先响应。...不需要填写常规表格,验证用户可以通过Payment Request API触发的原生界面顺利支付。 修复 查看我们的支付请求API集成指南。
自那时以来,这种很少使用的功能得以不断发展,现已变得不再只是一个简单的书签。 当一个网络应用程序满足一定数量的启发式算法时,浏览器会注意到,并开始推荐用户将该网络应用程序“安装”为PWA。...为了让你的应用程序被Chrome分类为PWA,应用程序需要加载服务工作线程和某种脱机功能。至少,你必须能够在连接断开时提供服务。 文件处理 需要特别注意的一点是,服务工作线程文件的位置非常重要。...安装和更新生命周期也截然不同。通常,只要浏览器发现文件已更改,就会安装新的服务工作线程。然而,生活并不总是这么简单。已经有很多的“僵尸”服务工作线程无限期的存活在那里,并无限期地缓存陈旧过时的内容。...使用平台 为了进一步提高应用程序的适用性,一定要充分利用平台的功能。在一些浏览器上,你可以使用页面上的按钮生成本机共享对话框,通过它来邀请用户参加电话会议。...“Add to homescreen(添加到主屏幕)”是一个有用的按钮,它将触发代码的安装路径,并会在应用程序的某些部分不遵循PWA启发式时通知你。另外,这里也是测试和诊断服务工作线程的地方。
什么是PWA 首先,一个PWA是一个根据设备的支持情况,提供了额外特性的应用,比如: 离线工作能力 推送通知 几乎原生应用的展现和速度 资源的本地和缓存 但是PWA并不能在不支持最新技术的设备上像正常网站那样工作...有效值包括「fullscreen」(打开应用时全屏展示)、「standalone」(显示设备标准的状态栏和系统返回按钮)、「minimal-ui」(只有返回、前进、重新加载按钮)和「browser」(包括地址栏正常的浏览器...在桌面Chrome上,它会触发浏览器将应用添加到货架(shelf)。 在移动设备上,它提示安装应用程序(将图标添加到主屏幕): ?...您可以强制触发以下事件: Update 将强制更新Service Worker Push 模拟一个推送事件 Sync 模拟后台同步事件,这允许用户脱机执行操作,服务器上线后,再与服务器通信。...按住创建WNDT62缓存按钮触发缓存的创建: ? 然后通过WNDT62中的创建 RESOURCE_A,添加一项内容到缓存。 ?
vue & PWA 如果您的目的不是为现有的 vue 项目添加 PWA 支持,那么更推荐尝试 Lavas 注:PWA 应用要求必须全程 https,且在已安装的 PWA 应用中无法发送 http 请求...安装 PWA 插件 如果你已经在使用@vue/cli,那么可以直接在可视化界面中安装 PWA 插件 否则,可以通过vue add @vue/pwa命令来安装 该插件会使用谷歌的 PWA 框架 Workbox...与InjectManifest如何选择: 如果你只是想简单地将项目 PWA 化,选择GenerateSW,插件会自动帮你生成包含 precache manifest 的service-worker.js...PWA 应用,以下列举目前我所知道的添加方式 Chrome 专有方式 对于 PC 或 Android 的 Chrome 浏览器都可以实现点击一个按钮来添加 PWA 应用,其原理是拦截了beforeinstallprompt...这一事件,并在自己需要的时候触发 例如我们可以在项目的根 vue 实例中(以下示例省略了挂载及渲染等操作) 复制1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
这是一个冗长的描述,如果用一句话简要的概括:我认为PWA只是一个具有良好用户体验的Web应用程序,仅此而已。 为了更清晰地理解这个定义,让我们来一探其核心原则。...它在识别浏览器的应用程序方面起着重要作用,包含了有关应用程序的信息,即名称、作者和说明。应用程序搜索清单同样有助于识别安装在其设备上的PWA。...创建渐进式Web应用程序的最后一步是添加服务器。奇迹发生的地方是它启用了离线功能。对于PWA来说,服务器只是另一个JavaScript文件 - 一个非常强大的JavaScript文件。...为了在网络较慢时让用户保持参与,您可以使用动画或提供具备视觉反馈的客户端交互,就像带有小拼图或3D交互模型的刷新按钮一样简单。要有创意! 使用应用程序shell模型的一个缺点是其性能。...4.抓取 只要调用来自主应用程序的网络请求,就会触发Fetch事件。 发生这种情况时,服务器将对该请求负责。 如果请求的信息已被缓存,则服务器可以返回该信息并完全绕过网络。
简介 PWA是Progressive Web App的简称,是谷歌提出的新型Web技术,并由W3C及谷歌来推广这项技术,其主要目的是为了提升用户对网站原生使用体验,同时又能节省对网站的开启速度。...应用 近期对网站进行了PWA升级,只是用一个简单的插件就实现了对网站的APP转化,在开启我的网站的同时,在搜索栏会有加号提醒添加至桌面,如下图: image.png PWA在Chrome表现 若是对我的网站感兴趣...,可以点击按钮安装PWA,不用安装APP即可获取本站服务,若是手机用户可以在出现的将此页面发送至桌面来进行订阅。...image.png 缓存策略 强黏贴用户 将站点添加至屏幕 为了吸引并留住用户,不仅仅自己网站需要比较高质量的文章,良好的交互,还需要一些营销手段增强网站的曝光度,提升与用户的交互。...用户自动登录 账户是网站必不可少的组成部分。账户体系的存在,可以让网站给用户提供分级服务,同时网站也能够通过收集用户行为实现精准推送。
3.HTTPS:由于 PWA 需要服务工作者,因此它必须从 HTTPS 端点托管。 4.Manifest:这是一个 json 文件,我们可以在其中包含与我们的应用程序关联的所有元数据。...我们还可以让 service worker 监听网络变化期间发生的事件,并可以动态地服务、修改或拦截应用程序内的网络请求。...简而言之,PWA 的两个主要功能(例如一次性安装和缓存)是使用 Service Worker 脚本完成的。它还可以用于在用户不使用网站时处理推送通知。...HTTPS 由于以下原因,PWA 必须使用 HTTPS 协议提供服务: 1.Service Worker 需要 HTTPS 连接。...2.保护用户的隐私 3.保证内容的真实性 Manifest file 这是一个 json 文件,其中包含有关 PWA 的所有必要元数据。此文件还使 PWA 可跨设备安装。
,从而实现拦截和加工网络请求、消息推送、静默更新、事件同步等一系列功能,是 PWA 应用的核心技术之一。...host // 为了防止作用域污染,将安装前注销所有已生效的 Service Worker navigator.serviceWorker.getRegistrations...这个方法也可以用于检测进行的任务是否成功。在服务工作线程中,这个方法告诉浏览器事件一直进行,直至 promise resolve,浏览器不应该在事件中的异步操作完成之前终止服务工作线程。...,影响用户体验 方法三:给用户一个提示 大致的流程是: 浏览器检测到存在新的(不同的)SW 时,安装并让它等待,同时触发 updatefound 事件 我们监听事件,弹出一个提示条,询问用户是不是要更新...「Update」:按钮可以对指定的 Service Worker 线程执行一次性更新。 「Push」:按钮可以在没有负载的情况下模拟推送通知。 「Sync」:按钮可以模拟后台同步事件。
您可能已经知道,渐进式Web应用(PWA)会越来越受欢迎,因为它们旨在使Web应用的用户体验更加流畅,创建Native应用程序般的体验,而不只是运行在浏览器的应用。...register()方法的一个重要细节是Service Worker文件的位置。在这种情况下,您可以看到服务工作者文件位于域的根目录。这意味着Service Worker的范围将是整个来源。...如果我们在/example/sw.js注册Service Worker文件,那么服务工作者将只能看到URL以/example/(即/example/page1/,/example/page2/)开头的页面的...更新服务工作者 当用户访问您的Web应用程序时,浏览器会尝试重新下载包含Service Worker代码的.js文件。这发生在后台。...一旦您的Web应用程序当前打开的页面关闭,旧的Service Worker将被浏览器终止,新安装的Service Worker将完全控制。这是当它的激活事件将被触发。 为什么需要这些?
注册服务 在 install Service Worker 之前,要在主进程 JavaScript 代码里面注册它,注册是为了告诉浏览器我们的 Service Worker 文件是哪个,然后在后台,Service...安装 Service Worker 服务 install 事件绑定在 Service Worker 文件中,当安装成功后,install 事件就会被触发。...API 和浏览器标准的缓存工作原理相似,但是只是针对自己的 scope 域的,缓存会一直存在,知道手动清楚或者刷新。...更新您的服务工作线程 JavaScript 文件。...当 Service Worker 安装完成后并进入激活状态,会触发 activate 事件。通过监听 activate 事件你可以做一些预处理,如对旧版本的更新、对无用缓存的清理等。
PWA 的主要作用:可以让网站安装到设备的主屏幕上,就像用户在 APP 商店下载应用后这个应用的图标会放在桌面上。...它可以创建有效的离线体验,拦截网络请求并基于网络是否可用以及更新的资源是否驻留在服务器上来采取适当的动作。...注册 一般在 window.onload 中注册 service worker,这主要是为了防止与其它资源竞争。...如果缓存里没有,才向服务器发请求。 当然,也可以使用其他策略,比如在有网时就主动请求服务器的数据,如果断网了,则使用缓存中的数据。...安装 PWA 但目前为止,网站可以离线访问了,但是可能还不能安装它。在有 PWA 的网站上,搜索栏的右侧一般有一个 + 图标,提示你可以安装到桌面。 ?
PWA 的优势 PWA 是可被发现、易安装、可链接、独立于网络、渐进式、可重用、响应性和安全的。关于这些含义的细节,请参阅 PWA的优势。...简单概括为以下几点 可以支持离线观看 可被识别成一个应用程序 响应式 适合任何形式的设备 安装PWA插件 安装PWA前提是全站支持HTTPS协议 需要自行去域名服务商申请SSL证书 HEXO版本为4.1.1...以下,如版本在4.1.1以上,请输入以下命令安装指定版本 实际操作 安装PWA 查询hexo版本 hexo --version 安装hexo指定版本 npm i hexo@4.1.1 --save 安装...$ 的正则表达式路径,将这个的值修改成你的网站的 host 准备 Logo 图片 为了确保你的 PWA 图标支持所有设备,请务必使用 48x48、96x96、128x128、144x144、180x180...Hexo GitHub 从零开始搭建个人博客(四):让你的博客完美支持 PWA,我只是简化了一些繁琐的步骤,搞定以后,浏览器地址栏会出现一个+号,点击添加,即可在桌面看到你的应用程序啦!
Service Worker 支持的事件 [h8fubjhexm.png] install:Service Worker 安装成功后被触发的事件, 在事件处理函数中可以添加需要缓存的文件 activate...:当 Service Worker 安装完成后并进入激活状态,会触发 activate 事件。...fetch :当浏览器在当前指定的 scope 下发起请求时,会触发 fetch 事件,并得到传有 response 参数的回调函数。fetch 事件特别重要,因为它能够定义你的缓存策略。...通过 PUSH API,当订阅了推送服务后,可以使用推送方式唤醒 Service Worker 以响应来自系统消息传递服务的消息,即使用户已经关闭了页面。...推送消息的能力 快速响应用户指令 缺点 支持率不高 Chrome在安卓移动端上的占有率很低 依赖的GCM服务在国内无法使用 微信小程序的竞争 PWA应用 Lavas 是一套基于 Vue 的 PWA 解决方案
在服务工作线程开始「安装新版本时触发」,表现为 ServiceWorkerRegistration.installing 收到一个新的服务工作者线程 也可以使用 serviceWorkerRegistration.addEventListener...installing: 如果有则返回状态为 installing(安装)的服务工作者线程,否则为 null。...已安装状态也称为「等待中」(waiting)状态,意思是服务工作线程此时没有别的事件要做,只是准 备在得到许可的时候去控制客户端。...如果没有「活动的」服务工作线程,则新安装的服务工作者线程会跳 到这个状态,并直接进入激活中状态,因为没有必要再等了。...在下一个「导航事件」时,新服务工作线程会到达激活中状态。 「已安装」的服务工作者线程调用 self.skipWaiting()。
这些数据的特性决定了这个数据接口不能够被缓存。(假设将其缓存,那么就会存在可能用户进来看到当前还剩下10个名额,其实课程已经卖光了的情况) 为了这个时间耗时的大头,我们做了CGI接口的动静分离。...答案就是使用 PWA 在客户端做离线缓存,将我们直出的 HTML 缓存在客户端,每次用户请求的时候,直接从 PWA 离线缓存里取出对应的直出页面(HTML)响应给用户,响应之后紧接着请求 Node 服务更新本地的...比如这个试听模块,其实这个封面图和试听按钮是可以在服务端渲染出来的,而后面的 Video 模块则必须要在客户度渲染(腾讯云 Tcplayer)。...所以这里可以拆分成:(试听封面 + 按钮 + 时间)服务端渲染 + 底层 Video(客户端渲染)。...这里我们可以在 APP 启动的时候,用一个预加载的脚本最大限度的拉取用户可能访问的页面。
你可以编写令人惊叹的 Web 2.0 和 Ajax 应用程序,它们的外观和行为与 iPhone 上的应用程序一模一样,而且这些应用程序可以与 iPhone 服务完美集成。你猜怎么着?...iOS 上的安装提示 在 iOS 上安装 PWA 需要向用户显示自定义指令 目前在 iOS 上安装 PWA 需要打开共享面板,然后点击“添加到主屏幕”按钮,这样基本上就可以了,但仍然不像安装原生 iOS...例如,开发者无法区分实际的 Safari(有“添加到主屏幕”按钮)和 SFSafariViewController View(没有这个按钮)。...如果你使用了后者,浏览器会认为是 example.com/(根域名)——问题是它不会出现错误消息或警告,只是静默地失败了。...桌面截图 旧的安装提示(左和中)与新的安装提示(右) 更丰富的安装界面无疑有助于弥合原生应用和 PWA 之间的差距。
领取专属 10元无门槛券
手把手带您无忧上云