2 回答

TA貢獻1864條經(jīng)驗 獲得超6個贊
如果您訪問https://ovoc.netlify.com/,您應(yīng)該會在 Chrome DevTools 的網(wǎng)絡(luò)面板中看到以下內(nèi)容:
這表明軟件正在向 URL 發(fā)出請求https://ovoc.netlify.com/[object%20Response]
,它返回 404 響應(yīng)。
它還告訴您該請求源自pwabuilder-sw.js:17
,即您的服務(wù)工作者腳本的第 17 行。
該行對應(yīng)于:
return cache.add(new Response("TODO: Update the value of the offlineFallbackPage constant in the serviceworker."));
這似乎是您需要更新的一些占位符代碼,以放入離線頁面的實際 URL。
此外,您<head>
的 標簽包括許多undefined
網(wǎng)址:
看起來這些是由 生成的ManUp.js
,因此您應(yīng)該確保正確配置。

TA貢獻1836條經(jīng)驗 獲得超4個贊
這是在您的應(yīng)用程序中緩存靜態(tài)資產(chǎn)和動態(tài)資產(chǎn)的工作代碼注意:1)安裝服務(wù)工作者時,它會安裝所有靜態(tài) html、css、js 文件 2)將所有靜態(tài)文件名替換為可用的文件您的應(yīng)用程序 3) 動態(tài)緩存用于緩存經(jīng)常更新的圖像 4) 如果您發(fā)布了需要更新到用戶的新版本,只需將 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) {
});
}
})
);
});
添加回答
舉報