# 请求

在 fetch 事件中,你自己可以根据请求的内容来决定是否需要拦截请求

# 示例

self.addEventListener('fetch', function (event) {
    event.respondWith(caches.match(event.request.url).then(function (response) {
        if (response) {
            return response;
        }
        var request = event.request.clone();
        return fetch(request).then(function (res) {
            if (!res || res.status !== 200) {
                return res;
            }
            if (allowCacheWithFetch(request)) {
                var responseClone = res.clone();
                caches.open(ver).then(cache => {
                    cache.put(event.request.url + "?v=1.2", responseClone);
                });
            }

            return res;
        })
    }));
});

event.respondWith 是用来做拦截的,你可以在拦截之前判断请求。