践行angular我爱编程

[翻译]Service Worker的配置

2018-01-11  本文已影响38人  Gary嘉骏

原文

前期准备

如下的基础知识:

src/ngsw-config.json的配置文件定义了 Angular service worker需要缓存哪些文件和数据并应该如何去更新它们。CLI在ng build --prod期间处理配置文件。手动,您可以使用ngsw-config工具处理它:

ngsw-config dist src/ngsw-config.json /base/href

配置文件使用json格式。所有文件的路劲必须以/开头,这表示在部署根目录内(在cli的项目中一般指dist)。

路径格式使用一般的国际格式:

例子路径:

1. /**/*.html 表示所有html文件
2. /*.html 仅表示跟路径的html文件
3. !/**/*.map 不包括所有的sourcemaps文件

下面将说明每一小个定义项

appData

这是给你传递用来描述该版本app的数据。SwUpdate 服务会将其包括在更新通知中。许多app在提示用户有新更新的页面中使用此数据提供额外的信息。

index

这是定义初入口的页面,通常这就是/index.html

assetGroups

这是与app一同更新的资源集合。可包括基础脚本、从CDNs加载的第三方脚本及其它url资源。因为构建过程中不可能知道所有的的额外url资源,所以只要是URL 格式的就能匹配。

这部分包括一个资源对象数组,每一个包括一系列资源和如何缓存的规则

{
  "assetGroups": [{
    ...
  }, {
    ...
  }]
}

每一个子对象定义了一组资源表及如何管理的规则。这规则觉得资源如何被获取和在发现新更新后如何被处理

定义对象的Typescript借口如下:

interface AssetGroup {
  name: string;
  installMode?: 'prefetch' | 'lazy';
  updateMode?: 'prefetch' | 'lazy';
  resources: {
    files?: string[];
    versionedFiles?: string[];
    urls?: string[];
  };
}
name

name是必要。它被用来识别特定的资源组

installMode

installMode 决定了这些资源在初始化时如何缓存,有2种:

updateMode

对于那些缓存已有的资源,updateMode决定当发现app新版时的缓存行为。根据updateMode更新自上一版本以来组中的被更改的所有资源。

resources

这区域描述被缓存的资源,分别三块。

dataGroups

不想资源组,数据请求不是跟随着app的版本的而改变的。它们根据手动配置的规则进行缓存,这些规则对于API请求和其他数据依赖等情况更为有用。

Data groups 的Typescript 接口如下:

export interface DataGroup {
  name: string;
  urls: string[];
  version?: number;
  cacheConfig: {
    maxSize: number;
    maxAge: string;
    timeout?: string;
    strategy?: 'freshness' | 'performance';
  };
}
name

类似assetGroups, 就是一个唯一标识码。

urls

url规则列. 符合的url资源就会安照下面的规则去缓存。

version

有时API会以不向后兼容的方式更改格式。新版本的应用程序可能与旧API格式不兼容,因此可能与该API中现有的缓存资源不兼容

version 提供了一种机制来指示被缓存的资源已经以向后不兼容的方式被更新,并且旧的缓存条目(来自以前版本的条目)应该被丢弃。

version 是整数类型,默认为0.

cacheConfig

这部分定义符合的请求如何去缓存。

maxSize

(必须) 缓存中的条目或响应的最大容量。开放式缓存可以无限制地增长,最终超过存储配额,要求清除缓存。

maxAge

(必须) 表示回复可在缓存内最大时间,超过则被认为无效并被清除。maxAge 是一个时长字符串,可用下面的单位:

例如, 字符串3d12h 将缓存内容3.5天。

timeout

这时长字符串定义请求的最长时间。如果定义了,Angular service worker向网络作的请求不会超过此时长,超过后,则会直接使用缓存去回复app。

strategy

Angular service worker有两种数据缓存策略。

你们的赞赏是我的无限动力

上一篇 下一篇

猜你喜欢

热点阅读