Coursera 笔记

Module 02 · Web Design Methodologies网页设计方法论

Service Worker, Push Notifications and CachingService Worker、推送通知与缓存

Coursera ↗

欢迎来到“Service Worker、推送通知与缓存”课程。观看完本视频后,您将能够:

  • 描述 Service Worker 及其生命周期。
  • 概述 Service Worker 的特性。
  • 描述 推送通知 及其配置。
  • 解释 渐进式 Web 应用程序 (PWA) 中的缓存和数据存储。
  • 解释 缓存策略。

用户需求与 Service Worker 的作用

用户希望即使在网络连接较差或不稳定的情况下,应用程序也能启动,并且希望在离线时也能访问内容。他们期望应用程序在无法完成请求时通知他们,而不是默默地失败或崩溃。为了解决这些问题,Service Worker 应运而生。

Service Worker 是 PWA 的核心组成部分,能够实现离线访问、快速加载、推送通知等功能。它们充当浏览器与网络之间的桥梁。Service Worker 在不同于页面主 JavaScript 代码的线程上运行,且无法访问 DOM 结构。由于 API 是非阻塞的,并支持跨不同上下文的通信,用户可以在结果准备就绪时随时接收。

Service Worker 非常高效,因为它们可以管理和修改网络请求、从缓存中提供自定义响应,甚至完全合成响应。


Service Worker 的生命周期

Service Worker 的生命周期包括以下三个步骤:

  1. 注册 (Registration)
    第一步是注册 Service Worker。如果没有注册,浏览器将无法知道 Service Worker 的位置,从而无法在后台安装 Service Worker。
  2. 安装 (Installation)
    第二步是安装 Service Worker。浏览器在了解 Service Worker 的位置和作用域后,会尝试安装它。大部分缓存过程在此阶段进行。
  3. 激活 (Activation)
    最后一步是激活 Service Worker。为了激活 Service Worker,必须确保当前没有其他 Service Worker 控制页面,因为激活阶段通常不是自动的。

Service Worker 的特性

  • 无法直接访问或与 DOM 交互。
  • 可以管理网站的网络请求。
  • 可以缓存网站的静态资源。
  • 可以使应用程序在离线时正常运行。
  • 能够缓存网络请求。
  • 即使应用程序未激活,也能接收推送通知。
  • 可以使用 Background Sync API,将活动推迟到用户网络连接稳定时执行。

推送通知

推送通知是发送到用户设备的提醒,通知他们执行某些操作。在基于 Web 的推送通知中,企业可以直接在设备上联系其网站访问者,而无需应用程序或访问者的个人信息。通过轻松访问用户,可以提高参与度,从而带来更高的销售额、更强的品牌认知度以及营销漏斗的改进。

以下是一些行业中如何通过推送通知获利的案例:

行业 推送通知的应用
媒体与娱乐 根据用户的观看或收听历史,发送个性化推荐,提高网站参与度和订阅量。
电子商务 通知客户新促销、新品上架以及购物车中的商品,从而提高销售额。
旅游业 通知客户酒店优惠或特别旅游套餐,促进旅游业增长。天气状况和目的地推荐也非常有帮助。
银行与金融科技 银行应用可以发送交易更新、安全更新或其他财务建议。金融科技应用可以提醒用户汇率变化、股市事件等。

PWA 中的推送通知配置

PWA 通常使用 Service Worker 来启用推送通知和离线访问。Service Worker 提供 Notifications API 和 Push API 作为推送通知功能的基础:

  • Notifications API:向用户显示通知。
  • Push API:允许应用程序注册推送通知并接收消息。

配置推送通知的步骤包括:

  1. 注册、安装和激活 Service Worker。
  2. 创建 PWA 并设置 Service Worker 后,需要配置权限验证。
  3. 最后,必须为用户提供退出推送通知的方式。

PWA 中的数据存储

PWA 在资源加载方面具有相当大的控制权。Service Worker 能够拦截、修改并直接响应网络请求,这是其强大功能的重要组成部分。

PWA 提供了多种本地存储数据的选项,即使用户的网络连接中断,也能继续工作。这些选项包括:

存储方式 描述
IndexedDB 允许在加密媒体对象或文件上存储大量结构化数据的 API。由于 API 是异步的,可以在前端代码和 Service Worker 代码中使用。
Web Storage 前端代码可以使用 Web Storage 存储少量数据。数据以键值对形式存储,仅对当前应用源可访问。
Cache API 管理缓存资源。开发者可以使用 Cache API 存储和检索各种在线资源,如 HTML、CSS、JavaScript 等。
File System Access API 允许 PWA 读取和保存用户设备上的文件和文件夹的更改。

缓存策略

应用程序使用的大部分数据是动态的,这意味着信息通过远程 API 从数据库中获取。以下是几种常见的缓存策略:

策略 描述
Stale-while-revalidate 返回缓存的资源版本,同时从网络获取更新版本(如果存在)。
Network only 仅请求网络,不使用缓存。适用于任何缓存版本都不可接受或存在风险的资源。
Network first, cache fallback 首先检查网络响应,如果成功则返回当前数据;如果网络请求失败,则返回缓存条目。
Cache first 在请求网络之前先检查缓存。适用于即时缓存和优化重复资源请求。
Cache only 仅返回缓存的资源,不尝试连接网络。

总结

在本视频中,您了解到:

  • Service Worker 在不同于页面主 JavaScript 代码的线程上运行。
  • Service Worker 的生命周期包括三个步骤:注册、安装和激活。
  • Service Worker 具有多种特性,如管理网络请求、缓存资源、支持离线功能等。
  • 推送通知 是发送到用户设备的提醒,能够提高用户参与度和业务收益。
  • PWA 提供了多种本地存储数据的选项,如 IndexedDB、Web Storage、Cache API 等。
  • 应用程序使用动态数据时,可以采用多种缓存策略,如 Stale-while-revalidate、Network first 等。

通过掌握这些知识,您将能够更好地设计和优化 PWA,为用户提供更流畅、更高效的体验! 🚀