服务人员:仅按文件名缓存而不是URL

时间:2018-11-20 20:03:28

标签: service-worker

我注意到当您与服务工作者一起缓存文件时

event.respondWith(
    caches.match(event.request)
        .then(function(response) {
            if (response) {
                return response;
            }
            return fetch(event.request);
        }
    )
);

enter image description here

基于url缓存文件

/bundle/v1/assets/icon.svg 

但是我只想拥有缓存所基于的文件名。意味着相同的缓存用于

/bundle/v1/assets/icon.svg 
/bundle/v2/assets/icon.svg 
/bundle/v3/assets/icon.svg 

这样可能吗?

1 个答案:

答案 0 :(得分:1)

您可以通过在将URL用作键之前对URL进行规范化来对Cache Storage API进行读写操作,从而获得一些创意。

以您的示例为例,假设您知道,每次与以icon.svg结尾的URL与Cache Storage API交互(读或写)时,您总是希望它引用相同的基础{{ 1}},无论使用完整的URL。您可以执行以下操作:

Response