Service Worker:在不使用 ignoreSearch 的情况下缓存对一次性 URL 的请求

Service worker: Caching requests for one-time URLs without ignoreSearch

我想使用 service worker 缓存一次性(过期)URLs。

例如,假设我有一个使用过期 URL 的音频文件。每次请求时,URL 都不同(尽管只有查询字符串不同):

http://example.com/foo.mp3?expires=123412341234&secret=abcabcabc
http://example.com/foo.mp3?expires=234523452345&secret=bcabcabca
http://example.com/foo.mp3?expires=345634563456&secret=cfewegfwe

我希望仅将其缓存为 http://example.com/foo.mp3,不包含查询字符串,以便任何后续请求(即使使用新的查询字符串)都使用缓存。

我知道 service worker 缓存中的 "ignoreSearch" 选项,它似乎已被添加到规范中,正是为了这个用例。但是 ignoreSearch 尚未在 Chrome 中实现。在 Chrome 实现这个之前我是运气不好,还是有解决方法?

找出我自己问题的答案。

解决方案是利用 service worker 为您提供多个缓存(您控制其名称)这一事实。只需为每个文件创建一个单独的缓存,每个缓存只包含一个请求。我在 http://www.holovaty.com/writing/service-worker-cache-names/

发布了代码和详细的文章