2 回答
TA贡献1864条经验 获得超6个赞
如果您访问https://ovoc.netlify.com/,您应该会在 Chrome DevTools 的网络面板中看到以下内容:
这表明软件正在向 URL 发出请求https://ovoc.netlify.com/[object%20Response]
,它返回 404 响应。
它还告诉您该请求源自pwabuilder-sw.js:17
,即您的服务工作者脚本的第 17 行。
该行对应于:
return cache.add(new Response("TODO: Update the value of the offlineFallbackPage constant in the serviceworker."));
这似乎是您需要更新的一些占位符代码,以放入离线页面的实际 URL。
此外,您<head>
的 标签包括许多undefined
网址:
看起来这些是由 生成的ManUp.js
,因此您应该确保正确配置。
TA贡献1836条经验 获得超4个赞
这是在您的应用程序中缓存静态资产和动态资产的工作代码注意:1)安装服务工作者时,它会安装所有静态 html、css、js 文件 2)将所有静态文件名替换为可用的文件您的应用程序 3) 动态缓存用于缓存经常更新的图像 4) 如果您发布了需要更新到用户的新版本,只需将 CACHE_STATIC_NAME 更改为 1 个版本
var CACHE_STATIC_NAME = 'static-v1';
var CACHE_DYNAMIC_NAME = 'dynamic-v1';
self.addEventListener('install', function(event) {
console.log('[Service Worker] Installing Service Worker ...', event);
event.waitUntil(
caches.open(CACHE_STATIC_NAME)
.then(function(cache) {
console.log('[Service Worker] Precaching App Shell');
cache.addAll([
'/',
'/index.html',
'/src/js/app.js',
'/src/js/feed.js',
'/src/js/promise.js',
'/src/js/fetch.js',
'/src/js/material.min.js',
'/src/css/app.css',
'/src/css/feed.css',
'/src/images/main-image.jpg',
'https://fonts.googleapis.com/css?family=Roboto:400,700',
'https://fonts.googleapis.com/icon?family=Material+Icons',
'https://cdnjs.cloudflare.com/ajax/libs/material-design-lite/1.3.0/material.indigo-pink.min.css'
]);
})
)
});
self.addEventListener('activate', function(event) {
console.log('[Service Worker] Activating Service Worker ....', event);
event.waitUntil(
caches.keys()
.then(function(keyList) {
return Promise.all(keyList.map(function(key) {
if (key !== CACHE_STATIC_NAME && key !== CACHE_DYNAMIC_NAME) {
console.log('[Service Worker] Removing old cache.', key);
return caches.delete(key);
}
}));
})
);
return self.clients.claim();
});
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request)
.then(function(response) {
if (response) {
return response;
} else {
return fetch(event.request)
.then(function(res) {
return caches.open(CACHE_DYNAMIC_NAME)
.then(function(cache) {
cache.put(event.request.url, res.clone());
return res;
})
})
.catch(function(err) {
});
}
})
);
});
添加回答
举报