Javascript 使用服务工作者动态缓存HTTP URL的包装器?

Javascript 使用服务工作者动态缓存HTTP URL的包装器?,javascript,service-worker,Javascript,Service Worker,我有一个运行service worker的应用程序。我正在使用sw工具箱库动态缓存URL,但我想创建sw工具箱上的包装器,它为我的应用程序提供用于URL缓存的getter和setter 由于service worker在不同的线程中运行,而我的应用程序在主线程中运行,所以我想知道如何用Javascript创建一个包装器,通过它我的应用程序可以与service worker通信并按需缓存资源?这取决于您的工作人员缓存数据的方式,它只使用标准的“缓存”API,您可以只查询附加到全局范围的缓存对象 在

我有一个运行service worker的应用程序。我正在使用sw工具箱库动态缓存URL,但我想创建sw工具箱上的包装器,它为我的应用程序提供用于URL缓存的getter和setter


由于service worker在不同的线程中运行,而我的应用程序在主线程中运行,所以我想知道如何用Javascript创建一个包装器,通过它我的应用程序可以与service worker通信并按需缓存资源?

这取决于您的工作人员缓存数据的方式,它只使用标准的“
缓存”API,您可以只查询附加到全局范围的
缓存
对象


在这种情况下,您的朋友就是您的朋友。

到目前为止,
缓存
api可以从内容中获得,这意味着您可以直接从Javascript代码中使用它,而无需在服务人员中运行

检查此线程以找到解决方案:您将能够从窗口对象使用缓存

这意味着您可以使用各种缓存方法来处理内容:

Chrome 46的另一个提醒是,您将能够在安全的来源中存储内容。

将暴露于窗口范围以及工作人员

你甚至不必和服务人员一起使用它 虽然它是在服务人员规范中定义的

在Angular 5中(至少)缓存API不可用,因为Angular用其ZoneAwarePromise替换了浏览器本机承诺,这导致了错误。请参阅,在本例中,您需要另一个上下文来访问API,如iframe(如我的变通方法中所述),或者可能需要与服务工作者通信以使其进行缓存。