gpt4 book ai didi

javascript - 服务人员 : Invalidate specific cached responses

转载 作者:行者123 更新时间:2023-11-29 10:30:59 25 4
gpt4 key购买 nike

POSTPUTDELETE 到相同的 url 或它发生的资源或集合的任何 url,例如:

假设我缓存了 /subscriptions,稍后我对 /subscriptions 执行了一个 POST 以添加新订阅,或者说我 PUT/subscriptions/243 以更新现有订阅。这意味着我缓存的订阅集合现在是陈旧数据,我想从我的缓存中删除它,以便下一个请求将发送到服务器。

我想到了两个选项,但我不确定是否可行:

我可以在 caches.match() 调用中使用正则表达式吗?

这样我就可以将请求的 url 的父集合部分与在缓存中找到的键匹配。

我可以获取每个缓存数据响应的键吗?

如果是这样,我可以循环遍历每个响应并查看 key 是否符合删除它的条件。

有什么想法吗?谢谢!

最佳答案

在通过 caches.match() 进行查找时,您不能使用 RegExp 或除字符串匹配(可选 ignoring query parameters )以外的任何其他内容。

我推荐第二种方法,在这种方法中你打开一个命名缓存,get its keys ,然后筛选出您关心的内容。代码不多,而且使用 await/async 看起来相当不错:

async function deleteCacheEntriesMatching(cacheName, regexp) {
const cache = await caches.open(cacheName);
const cachedRequests = await cache.keys();
// request.url is a full URL, not just a path, so use an appropriate RegExp!
const requestsToDelete = cachedRequests.filter(request => request.url.match(regexp));
return Promise.all(requestsToDelete.map(request => cache.delete(request)));
}

// Call it like:
await deleteCacheEntriesMatching('my-cache', new RegExp('/subscriptions'));

关于javascript - 服务人员 : Invalidate specific cached responses,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46118650/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com