每隔几分钟就从服务工作者中从缓存中删除特定文件?

问题描述

我有一个服务人员,从我的Web服务器上获取和缓存文件。如果请求的资源可用,它将从本地缓存中提供服务。但是我看到服务工作者的缓存不尊重资源的缓存头,并且似乎永远保留它。

我需要每3分钟从缓存中清除我的主页/一次。还有每3小时一个URL /trust/me.PHP

我编写了这样的函数,每隔3分钟从我的缓存中删除主页:

f = function(x) {
  scale(x)[,1] * 2 + 0
}

task = tsk("iris")
pos = po("colapply",applicator = f,affect_columns = selector_name("Sepal.Width"))

train_out = pos$train(list(task))[[1]]$data(cols = task$feature_names)
round(colMeans(train_out),2)
round(apply(train_out,MARGIN = 2,FUN = sd),2)

pos$state

但这不起作用。最好的方法是什么?

解决方法

Service Worker缓存不会自动接受Cache-Control标头。相反,您需要创建自己的缓存失效逻辑。 有很多方法可以解决此问题,对于一个应用程序中的所有资产,也不是每个应用程序,没有一个答案是正确的。

您可以设置一个例程,以在用户积极使用您的应用程序时定期检查是否有更新。我通常使用HEAD请求检查更新,但有时也会使用缓存清单文件。几年前,我在我的书中写了有关后者的文章。

您可能还想设置一个在资产上启用TTL的时间。为此,我通常在IndexedDB中保留一个哈希表进行比较。