Service Worker:运行在浏览器背后的独立线程,一般可以用来实现缓存功能

84 阅读2分钟

Service Worker 是一种在浏览器中运行的 JavaScript 脚本,它允许你在客户端进行缓存、后台同步、推送通知等操作。它可以提高 web 应用的性能,特别是在离线或低连接网络环境下,它能让应用继续运行并提供基本功能。

如何工作:

  1. 注册: 在浏览器中注册 Service Worker。
  2. 安装: 当 Service Worker 安装时,它可以缓存静态资源,使得离线访问成为可能。
  3. 激活: 安装完成后,Service Worker 被激活,可以接管页面的请求并处理缓存。
  4. 拦截网络请求: Service Worker 能够拦截所有网络请求,可以选择返回缓存的资源,或者请求网络数据并缓存它。

Angular 使用例子

  1. 安装依赖: 在 Angular 项目中使用 Service Worker,首先需要安装 Angular 的 PWA 支持:

    ng add @angular/pwa
    
  2. 配置 angular.json: Angular 会自动为你更新 angular.json 文件,加入必要的配置。

  3. 修改 AppModule: 在你的 app.module.ts 文件中,导入 ServiceWorkerModule 并启用它:

    import { NgModule } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { AppComponent } from './app.component';
    import { ServiceWorkerModule } from '@angular/service-worker';
    import { environment } from '../environments/environment';
    
    @NgModule({
      declarations: [AppComponent],
      imports: [
        BrowserModule,
        ServiceWorkerModule.register('ngsw-worker.js', {
          enabled: environment.production,
        }),
      ],
      providers: [],
      bootstrap: [AppComponent],
    })
    export class AppModule {}
    
  4. 创建 Service Worker 脚本: 如果你需要更细致的控制,可以自定义 ngsw-worker.js 脚本或修改 ngsw-config.json 来定义缓存策略。

  5. 构建并启动应用: 使用以下命令进行构建,并确保 PWA 功能正常工作:

    ng build --prod
    

    然后你可以启动一个静态文件服务器来测试:

    npx http-server -p 8080 -c-1 dist/
    

示例效果:

  • 离线支持: 用户可以在离线情况下访问缓存的资源。
  • 快速加载: 服务工作者可以通过缓存的资源,减少页面加载时间。

这样,Angular 服务工作者帮助你为 Web 应用添加离线功能和提升性能。