在 PWA 应用中实现 App Shell 架构

阅读时长 4 分钟读完

简介

PWA(Progressive Web App)是一种使用 Web 技术来构建的应用程序,具有类似原生应用的体验。App Shell 架构是 PWA 中一种常用的优化手段,其核心思想是将应用的基础 UI 元素提前缓存到客户端,以提高应用的启动速度和性能。

本篇文章将深入介绍 App Shell 架构,说明其实现方法及其在 PWA 应用中的优势和指导意义,并提供实例代码以便读者实践。

App Shell 架构的实现方法

App Shell 架构通常由两部分组成:

  1. Shell:应用的基础 UI 元素,例如:导航栏、标签栏、底部菜单、侧边栏等,其作为整个应用的框架进行缓存
  2. Content:应用的具体页面内容,例如:用户信息、文章列表、订单等

下面将详细介绍将 App Shell 架构应用在 PWA 中具体的实现方法:

1. 在 Service Worker 中缓存 Shell

在 Service Worker 的 install 生命周期中,我们需要将应用的基础 UI 元素缓存到客户端。具体实现方式如下:

-- -------------------- ---- -------
-------------------------------- --------------- -
  ----------------
    ----------------------------------------------- -
      ------ --------------
        --------------
        --------------
        -------------
      ---
    --
  --
---
展开代码

其中,caches.open('shell-cache') 用于打开 Shell 的缓存文件,cache.addAll([]) 用于将各个 Shell 的资源进行缓存。

2. 动态向 Service Worker 中注入 Content

在 Service Worker 的 fetch 生命周期中,需要根据 URL 查询请求的资源是否存在于缓存中。如果不存在,则动态请求 Content 的数据,并将数据缓存到客户端。具体实现方式如下:

-- -------------------- ---- -------
------------------------------ --------------- -
  ------------------
    --------------------------------------------------- -
      -- ---------- -
        ------ ---------
      - ---- -
        ------ -------------------------------------------- -
          ----- -------------- - -----------------
          ------------------------------------------------- -
            ------------------------ ----------------
          ---
          ------ ---------
        ------------------------ -
          -------------------
        ---
      -
    --
  --
---
展开代码

其中,caches.match(event.request) 用于查询缓存是否存在请求的资源,如果存在则返回,否则动态请求 Content 并缓存至客户端。

App Shell 架构在 PWA 中的优势和指导意义

通过 App Shell 架构的实现,PWA 可以获得以下优势:

  1. 较快的启动速度:缓存 Shell 可以实现应用的快速启动,使得用户可以快速看到应用的基础 UI 元素
  2. 更好的性能体验:缓存 Shell 可以减少每次跨网络请求资源的开销,使得应用的性能更好,并且动态注入 Content 的策略也可以减少对网络带宽的依赖

通过 App Shell 架构的实践,我们可以得到以下的指导意义:

  1. 需要减少应用的加载时间并优化性能体验时,可以选择使用 App Shell 架构进行优化
  2. 在实现 App Shell 架构时,需要将重点放在缓存 Shell 和动态注入 Content 上,在实现时要充分考虑各种情况。例如:缓存清除的时机、网络断开时的处理等

结语

通过本文的介绍,读者应该能够正确理解 App Shell 架构的实现方法及其在 PWA 中的优势和指导意义,并且能够成功实现 App Shell 架构的优化。在应用实践中,读者根据实际情况可以灵活运用 App Shell 架构,以创造更好的用户体验。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67930799504e4ea9bd7105cb

纠错
反馈

纠错反馈