服务器无法访问时显示离线缓存
Show offline cache when server is unreachable
是否可以在服务器关闭时显示我网站的离线缓存?
我能找到的关于离线页面的所有示例都与客户端离线有关。如果无法访问服务器,我需要向用户显示我网站的缓存版本。
我读过有关 HMTL 5 中的 Cache Manifest 的信息,但它正在被删除并导致许多问题。
不使用任何其他负载平衡服务器等可以做什么?
我最近了解到,使用 Fetch API 和 service workers 非常简单:
首先,注册 Service worker:
if (!navigator.serviceWorker) return;
navigator.serviceWorker.register('/sw.js')
然后将其配置为缓存需要的内容:
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(staticCacheName).then(function(cache) {
return cache.addAll([
'/',
'js/main.js',
'css/main.css',
'imgs/icon.png',
]);
})
);
});
如果调用没有响应,则使用 Fetch API 获取缓存的和平:
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response) {
return response || fetch(event.request);
})
);
});
如果需要获取缓存版本 仅 如果服务器已关闭,请尝试以下操作:
self.addEventListener('fetch', function(event) {
event.respondWith(
return fetch(event.request).then(function(response) {
if (response.status !== 200) {
caches.match(event.request).then(function(response) {
return response;
}).catch(function(error) {
console.error('Fetching failed:', error);
throw error;
});
})
);
});
p.s。使用 Fetch API 似乎比实现旧的和讨厌的 XMLHttpRequest 好得多。
是否可以在服务器关闭时显示我网站的离线缓存?
我能找到的关于离线页面的所有示例都与客户端离线有关。如果无法访问服务器,我需要向用户显示我网站的缓存版本。
我读过有关 HMTL 5 中的 Cache Manifest 的信息,但它正在被删除并导致许多问题。
不使用任何其他负载平衡服务器等可以做什么?
我最近了解到,使用 Fetch API 和 service workers 非常简单:
首先,注册 Service worker:
if (!navigator.serviceWorker) return;
navigator.serviceWorker.register('/sw.js')
然后将其配置为缓存需要的内容:
self.addEventListener('install', function(event) {
event.waitUntil(
caches.open(staticCacheName).then(function(cache) {
return cache.addAll([
'/',
'js/main.js',
'css/main.css',
'imgs/icon.png',
]);
})
);
});
如果调用没有响应,则使用 Fetch API 获取缓存的和平:
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request).then(function(response) {
return response || fetch(event.request);
})
);
});
如果需要获取缓存版本 仅 如果服务器已关闭,请尝试以下操作:
self.addEventListener('fetch', function(event) {
event.respondWith(
return fetch(event.request).then(function(response) {
if (response.status !== 200) {
caches.match(event.request).then(function(response) {
return response;
}).catch(function(error) {
console.error('Fetching failed:', error);
throw error;
});
})
);
});
p.s。使用 Fetch API 似乎比实现旧的和讨厌的 XMLHttpRequest 好得多。