不缓存angularJs应用程序的sw预缓存

不缓存angularJs应用程序的sw预缓存,angularjs,service-worker,Angularjs,Service Worker,我是服务人员概念的新手,所以如果我忽略了文档中的某些内容,请原谅。我有一个angular应用程序已经在生产中运行,我正在尝试介绍使用sw precache的服务人员。 首先,我尝试预先设置所有图像/字体和两个js文件,看看它是否有效,所以我的预先设置配置如下- { "cacheId": "static-cache", "importScripts": [ "sw-toolbox.js" ], "stripPrefix": "dist/", "verbose": tru

我是服务人员概念的新手,所以如果我忽略了文档中的某些内容,请原谅。我有一个angular应用程序已经在生产中运行,我正在尝试介绍使用sw precache的服务人员。 首先,我尝试预先设置所有图像/字体和两个js文件,看看它是否有效,所以我的预先设置配置如下-

{
  "cacheId": "static-cache",
  "importScripts": [
    "sw-toolbox.js"
  ],
  "stripPrefix": "dist/",
  "verbose": true,
  "staticFileGlobs": [
    "dist/img/**.*",
    "dist/javascripts/require.js",
    "dist/stylesheets/**.*",
    "dist/webfonts/**.{ttf, eot, woff}",
    "sw-toolbox.js",
    "service-worker.js"
  ]
}
现在,我可以看到服务人员已正确注册和安装,缓存存储显示了所有带有_sw-precache散列的URL。

但是,当我加载应用程序并在“网络”选项卡中查看时,所有静态内容仍然是从内存/磁盘提供的,而不是从服务工作者提供的,我无法调试为什么会这样。我是不是遗漏了什么-

更新: 更多信息:我有错误的配置,因为我有动态url和服务器端呈现的html。服务器端的test.jsp为我提供了初始shell。 现在我已经从缓存中删除了所有其他静态文件,只保留了show.css

所以现在更新配置是必要的-

{
  "importScripts": [
    "sw-toolbox.js"
  ],
  "stripPrefix": "dist/",
  "verbose": true,
  "staticFileGlobs": [
    "dist/stylesheets/show.css"
  ],

  "dynamicUrlToDependencies": {
    "/developers": ["dist/stylesheets/show.css"]
  },

  "navigateFallback": "/developers"
}
Web根文件夹的名称不同,它是-

-仪表板
--img
--Java脚本
--service-worker.js
--sw-toolbox.js
-test.jsp
我将/developers-url视为存储缓存中的一个条目,但它仍然不能从服务工作者处获得,以供下次刷新。我已经尽了全力来解决这个问题,但我迫切需要一些线索,这里缺少什么。蒂亚。
如果需要更多信息,请告诉我

您的文件扩展名列表中似乎不允许有空格。您对webfonts的定义应为:

"dist/webfonts/**.{ttf,eot,woff}",
我克隆了sw precache repo并添加了一个单元测试,在该测试中,我比较了两个生成的文件,其中有两个不同的staticFileGlob,一个有空格,另一个没有空格

it('should handle multiple file extensions', function(done) {
var config = {
  logger: NOOP,
  staticFileGlobs: [
    'test/data/one/*.{txt,rmd}'
  ],
  stripPrefix: 'test'
};

var configPrime = {
  logger: NOOP,
  staticFileGlobs: [
    'test/data/one/*.{txt, rmd}'
  ],
};

generate(config, function(error, responseString) {
  assert.ifError(error);
  generate(configPrime, function(error, responseStringPrime) {
    assert.ifError(error);
    console.log('responseStringPrime',responseString);
    assert.strictEqual(responseString, responseStringPrime);
    done();
  });
});
}))

结果失败了。第二个配置不包括.rmd文件:

  -var precacheConfig = [["/data/one/a.rmd","0cc175b9c0f1b6a831c399e269772661"],["/data/one/a.txt","933222b19ff3e7ea5f65517ea1f7d57e"],["/data/one/c.txt","fa1f726044eed39debea9998ab700388"]];

  +var precacheConfig = [["test/data/one/a.txt","933222b19ff3e7ea5f65517ea1f7d57e"],["test/data/one/c.txt","fa1f726044eed39debea9998ab700388"]];

谢谢@stef chäser,这是一个错误。我已经更新了我的问题,删除了所有静态内容,但现在只保留show.css,我只想让我的应用程序外壳缓存首先工作,并进一步改进应用程序。虽然在存储缓存中看到url条目,但我无法缓存appshell。