Javascript 如何在缓存到服务工作者内部之前修改响应正文?

Javascript 如何在缓存到服务工作者内部之前修改响应正文?,javascript,response,httpresponse,service-worker,service-worker-events,Javascript,Response,Httpresponse,Service Worker,Service Worker Events,我原以为这会很简单,但我很难成功发送响应,然后修改存储在服务工作者内部缓存中的克隆响应 最后,我希望在缓存的数据中附加获取的时间和日期。我正在使用我的服务人员首先从网络获取此数据,如果不可用,则返回到缓存 这是我的服务人员提供的代码 event.respondWith( fetch(event.request) .then(function(e) { console.log('response',

我原以为这会很简单,但我很难成功发送响应,然后修改存储在服务工作者内部缓存中的克隆响应

最后,我希望在缓存的数据中附加获取的时间和日期。我正在使用我的服务人员首先从网络获取此数据,如果不可用,则返回到缓存

这是我的服务人员提供的代码

        event.respondWith(
            fetch(event.request)
            .then(function(e) {

                console.log('response', e)
                var responseToCache = e.clone();

                responseToCache.json().then(function(data) {
                    var today = new Date();
                    var date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
                    var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
                    data.cached = { date: date, time: time }
                    return data
                })

                // var init = {
                //     status: response.status,
                //     statusText: response.statusText,
                //     headers: { 'X-Foo': 'My Custom Header' }
                // };

                // response.headers.forEach(function(v, k) {
                //     init.headers[k] = v;
                // });

                // var responseToCache = response.text().then(function(body) {
                //     var today = new Date();
                //     var date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate();
                //     var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
                //     var bodyObj = JSON.parse(body)

                //     bodyObj.cached = { date: date, time: time }
                //     body = JSON.stringify(bodyObj)

                //     return new Response(body, init);
                // });

                caches.open(CACHE_NAME)
                    .then(function(cache) {
                        cache.put(requestURL, responseToCache);
                    });

                return e
            })
            .catch(function() {
                console.log('data offline')
                return caches.match(requestURL);
            })
        );