7

我目前正在使用 Polymer + service workers 实现 PWA。

一般来说,服务人员工作正常。如果我运行我的应用程序,一切都很好。我可以看到 Service Worker 缓存中填充了图像、html 文件、字体等等。这一切都很好。即使离线,带有图像等的页面也会正确加载。

问题是动态数据何时发挥作用。

我得到以下信息: 在此处输入图像描述

只有在离线模式下,Service Worker 才会生成真正不多说且不可调试的错误:“获取脚本时发生未知错误”

并且只有在离线模式下才会显示控制台中的错误。我想要实现的当然是没有错误;在灯塔中,我希望“离线时 URL 以 200 响应”为绿色/选中。

我的文件夹结构如下:

- images
- fonts
- data
-- portfolio
--- portfolio.json
--- portfolio.md
- src
- blog-app.html
- sw-precache-config.json

以下代码是我的 polymer.json + sw-precache-config.json Polymer.json:

{
  "entrypoint": "index.html",
  "shell": "src/jrblog-app.html",
  "fragments": [
    "src/portfolio-page.html",
    "src/contact-page.html",
    "src/404-page.html"
  ],
  "sourceGlobs": [
   "src/**/**/*",
   "data/**/*",
   "images/**/*",
   "style/*",
   "fonts/**/*",
   "bower.json"
  ],
  "includeDependencies": [
    "manifest.json",
    "bower_components/webcomponentsjs/webcomponents-lite.min.js"
  ]
}

sw-precache-config.json:

    module.exports = {

      cacheId: 'jrblog-app-v1',

      staticFileGlobs: [
    '/index.html',
    '/manifest.json',
    '/bower_components/webcomponentsjs/webcomponents-lite.min.js',
    '/images/*.*',
    '/fonts/**/*.*',
    '/style/*.css'
  ],
  navigateFallback: '/index.html',
  navigateFallbackWhitelist: [/^(?!.*\.html$|\/data\/).*/],
  runtimeCaching: [
    {
      urlPattern: /\/data\/*\/.*/,
      handler: 'fastest',
      options: {
        cache: {
          maxEntries: 100,
          name: 'data-cache'
        }
      }
    }
  ]
};
4

2 回答 2

4

这些错误表明您当前处于脱机状态并且无法从服务器获取资源。根据我的理解,从技术上讲,您应该担心的不是错误。当您在线时,您不会看到这些错误。

只要您能够在离线时提供静态资源资产。您和您的 Polymer Web 应用程序一切顺利!

于 2016-12-16T16:24:58.097 回答
1

这些错误告诉你,并不是所有的资源都被缓存了。根据你的情况,3个资源没有被缓存。所以修复它很容易,只需将此资源添加到缓存中即可。

于 2017-08-11T06:06:39.620 回答