0

我有一个服务人员在这里遵循 Nicolas Bevacqua 概述的这种方法。经过一些小的调整后,该代码对我有用。但是当浏览一段时间时,缓存会变得非常臃肿。我添加了一些排除项,即

if (( event.request.url.indexOf( '/maps/' ) !== -1 ) || 
    ( event.request.url.indexOf( '/mapfiles/' ) !== -1 ) || 
    ( event.request.url.indexOf( '/maps-api-v3/' ) !== -1 ) || 
    ( event.request.url.indexOf( '/images/' ) !== -1 ) || 
    ( event.request.url.indexOf( '.mp4' ) !== -1 ) ) {
    return false;
} 

但奇怪的是缓存总大小并不能反映实际缓存中的内容。那里似乎有我的两个缓存中没有列出的数据。有没有办法阻止这种情况发生?Service Worker 是否在缓存隐藏文件?

4

1 回答 1

0
  1. 你应该更具体一点——“一些严重的臃肿”在这里不太描述=)
  2. 在磁盘上检查时,总缓存大小不反映实际文件通常意味着您正在缓存不透明的响应。当一个不透明的响应被缓存时,缓存 API 通过说它占用大量空间来隐藏响应的实际大小。所以例如。7 Kb 文件在 SW 缓存中可能变为 7 Mb。在此处阅读更多信息:https ://cloudfour.com/thinks/when-7-kb-equals-7-mb/
  3. 我不确定您所说的“我的两个缓存中未列出的数据”是什么意思。您需要提供来自 DevTools 的代码示例和屏幕截图,并且更具体 =)
  4. 不,Service Worker 默认不缓存任何东西。我不确定您所说的“隐藏文件”是什么意思,但仍然没有,Service Worker 不会缓存您没有要求它缓存的任何内容。如果您要求它缓存这些“隐藏文件”,那么它将缓存它们。但是,在您不知情的情况下,没有自动机制可以这样做。

希望这可以帮助!随时提出更多问题或更新您的问题!

于 2020-04-21T06:35:37.153 回答