首页 > 解决方案 > Angular 7 Service Worker 缓存音频文件会导致 Safari 出现范围标头问题

问题描述

new audio(audio src here)在我的角度应用程序中,对于safari 上的任何请求,范围请求标头都存在问题。当从服务器请求音频时,音频文件的持续时间会正常返回。但是,当从 service worker 请求音频时,它将音频持续时间返回为 Infinite。

我有一个谷歌,Safari显然有这个问题,它将缓存媒体文件的范围标头设置为'bytes = 0-1',这就是问题所在,如下所示:

有没有一种角度来拦截new audio(audio src here)请求并修改标头或以某种方式从服务工作者缓存策略中排除任何媒体请求?

我当前的服务工作者配置如下:

{
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/assets/img/logo.png",
          "/assets/img/no-internet-icon.jpg",
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js"
        ]
      }
    },
    {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**"
        ]
      }
    }
  ]
}

标签: javascriptangularcachingaudioservice-worker

解决方案


也许您应该添加Content-Range音频响应的响应标头。

检查https://stackoverflow.com/a/37614302/11339645


推荐阅读