是否可以在白金服务工作者上组合 dom-repeat?

Is it possible to combine a dom-repeat on a platinum service worker?

我想为用户提供缓存多达 2,600 多个项目的能力,通过分组(书籍类别、单本书,或者如果他们不想要整本书,甚至可能只是某本书的章节) .据我所知,预缓存所有这些项目是不可能的,因为它们有 2,600 多个,并且将来会更多 - service worker 将在不到几百个时超时。并且由于服务工作者在安装时要么全部获取,要么 none(如果我理解正确的话),我是否需要使用多个服务工作者(具有不同的 ID?),还是我想错了?

我的想法是...

<iron ajax></iron-ajax>
<template is="dom-repeat" items="...">
<platinum-sw-register auto-register clients-claim skip-waiting>
    <platinum-sw-cache default-cache-strategy="fastest"
        cache-config-file="../someGenerator.php"></platinum-sw-cache>
</platinum-sw-register>

换句话说:

  1. 通过 iron-ajax 获取想要的 URL 列表(基于用户启用的缓存)
  2. 通过 dom-repeat
  3. 作为组迭代 URL
  4. 为 URL 组
  5. 创建一个具有自定义缓存配置的服务工作者
  6. 重复 2 和 3 直到完成,然后敬酒

someGenerator.php 会 return 为特定的 URL 组设置 JSON 配置。

我的应用程序是一个单页应用程序 - 带有霓虹灯动画页面 - 一页代表类别,一页用于图书列表,一页用于每本书的 table 内容,然后是每一章的一页内容。所有数据都是通过iron-ajax.

获得的

以下是一些演示问题的链接:

The App

A large non-functional cache-config generated

我怀疑,为了避免服务工作者因冗余而出错,或覆盖现有缓存,我需要分配单独的 ID,并将它们包含在生成的缓存配置中。 听起来对吗?

不,我不认为这是正确的方法。 <dom-repeat> 并且创建多个服务工作者不会完成您想要的。

由于获取 JSON 配置和执行所有预缓存的延迟,您在 install 处理程序期间确实遇到了一些服务工作者强加的超时。退后一步,您确定需要预缓存整组 URL 吗?

<platinum-sw> 也会为您提供运行时缓存,这样当浏览器加载给定的 URL 时,如果有可用的网络连接,资源将自动添加到缓存中并可离线使用在随后的 return 次访问中。

还有其他方法可以使用 window.caches 从受控页面中缓存资源,或者使用类似 postMessage() 的方法来传达额外 URL 的列表以进行缓存从您的受控页面到您的服务工作者。这两种方法都涉及超越使用 <platinum-sw> 获得的默认功能并深入挖掘内部结构。