// service-worker.js

var CACHE_NAME = 'my-cache';
var urlsToCache = [
    '/',
    '/css/style.css',
    // 其他需要缓存的资源的 URL
];

self.addEventListener('install', function (event) {
    event.waitUntil(
        caches.open(CACHE_NAME)
            .then(function (cache) {
                console.log('Opened cache');
                return cache.addAll(urlsToCache);
            })
    );
});

self.addEventListener('fetch', function (event) {
    event.respondWith(
        caches.match(event.request)
            .then(function (response) {
                // 如果资源已经在缓存中，直接返回
                if (response) {
                    return response;
                }

                // 否则，从网络获取资源
                return fetch(event.request).then(
                   return fetch(event.request).then(
                    function (response) {
                        // 检查我们得到了有效的响应
                        if (!response || response.status !== 200) {
                            return response;
                        }

                        // 对响应体进行一次读取
                        var responseToCache = response.clone();

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

                        return response;
                    }
                );
            })
    );
});

