NodeJS 服务工作进程缓存

avkwfej4  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(123)

我有下面的代码,应该缓存3个文件,但当我重新加载页面,我进入开发工具和网络,它说,我所有的文件都来自服务工人。我的代码是正确的,只有这3个文件被缓存或所有的文件被缓存?

let cache_name = 'v1'
let cache_files = [
 './style/general.css',
 './style/authenticate.css',
'./javascript/app.js'
];

self.addEventListener('install',function(e){
   console.log('[ServiceWorker] installed')
   e.waitUntil(
    caches.open(cache_name).then(function(cache){
    console.log('[ServiceWorker] Caching ',cache_files)
     return cache.addAll(cache_files)
  })
 )
});

self.addEventListener('activate',function(e){
  console.log('[ServiceWorker] activated')
  e.waitUntil(
    caches.keys().then(function(cache_names){
       return Promise.all(cache_names.map(function(this_cache_name){
         if(this_cache_name !== cache_name){
           console.log('[ServiceWorker] removing cached files      from',this_cache_name)
      return caches.delete(this_cache_name)
     }
    }))
   })
 )
})

self.addEventListener('fetch',function(e){
   e.respondWith(
     caches.match(e.request).then(function(response) {
        return response || fetch(e.request);
  })
 );
})

我怎么知道哪些文件被缓存了,哪些没有?

vu8f3i0k

vu8f3i0k1#

我不完全理解你的问题。
你的代码做这些事情:

  • 在安装时,阵列中的三个文件被放入名为“v1”的缓存中
  • 在以后的激活中该高速缓存将被迭代,缓存中不属于缓存名称***cache_name***的所有项都将被删除(即,如果将来将cache_name更改为“v2”,则所有“v1”项将自动删除)
  • 在从客户端获取事件时该高速缓存以查找所请求的文件;如果从该高速缓存中找到文件,则SW返回,否则SW将请求转发到网络

您可以通过左侧的“应用程序”选项卡的“缓存存储”窗格检查Chrome开发工具中的缓存文件。查看并滚动到底部:https://developers.google.com/web/tools/chrome-devtools/manage-data/local-storage

相关问题