fix: offline cache failed

Co-authored-by: LifeAdventurer <life0adventurer@gmail.com>
This commit is contained in:
2023-12-07 22:53:51 +08:00
parent eecc330409
commit f76d2bf880
2 changed files with 51 additions and 44 deletions

View File

@@ -1,19 +1,27 @@
let ip = null;
$.getJSON("https://api.ipify.org?format=json", function(data) {
ip = data.ip;
})
fetch("https://api.ipify.org?format=json").then(response => {
if (response.ok) {
return response.json();
}
throw new Error("Network response was not ok.");
}).then(res => {
ip = res.ip;
}).catch(err => {
if ('caches' in window) {
caches.match('https://api.ipify.org?format=json').then(response => {
if (response) {
return response.json();
}
}).then(data => {
if (ip === null && data !== undefined) {
ip = JSON.parse(data).ip;
}
});
}
});
if ('caches' in window) {
caches.match('https://api.ipify.org?format=json').then(response => {
if (response) {
return response.json();
}
}).then(data => {
if (ip === null) {
ip = JSON.parse(data).ip;
}
});
}
let goodFortunes = [];
let badFortunes = [];

View File

@@ -2,22 +2,26 @@ let pre_cache_file_version = 'pre-v1.0.0';
let auto_cache_file_version = 'auto-v1.0.0'
const ASSETS = [
'generators/images/lifeadventurer-192x192.png',
'generators/images/lifeadventurer-512x512.png',
'generators/images/lifeadventurer-180x180.png',
'generators/images/lifeadventurer-270x270.png',
'generators/images/lifeadventurer.jpg',
'/generators/images/lifeadventurer-192x192.png',
'/generators/images/lifeadventurer-512x512.png',
'/generators/images/lifeadventurer-180x180.png',
'/generators/images/lifeadventurer-270x270.png',
'/generators/images/lifeadventurer.jpg',
'https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css',
'https://ajax.googleapis.com/ajax/libs/jquery/3.7.1/jquery.min.js'
];
const NEED_UPDATE = [
'generators/fortune_generator/styles.css',
'generators/fortune_generator/fortune.js',
'generators/fortune_generator/matrix.js',
'generators/fortune_generator/special.json',
'generators/fortune_generator/fortune.json',
'/generators/fortune_generator/',
'/generators/fortune_generator/index.html',
'/generators/fortune_generator/styles.css',
'/generators/fortune_generator/fortune.js',
'/generators/fortune_generator/matrix.js',
'/generators/fortune_generator/special.json',
'/generators/fortune_generator/fortune.json',
'/generators/fortune_generator/manifest.json',
'https://api.ipify.org/?format=json',
]
/**
@@ -45,7 +49,7 @@ let is_in_array = (str, array) => {
path = str; // outside request
}
return array.indexOf(array) > -1;
return array.indexOf(path) > -1;
}
// install
@@ -55,7 +59,7 @@ self.addEventListener('install', event => {
// pre cache files
event.waitUntil(
caches.open(pre_cache_file_version).then(cache => {
cache.addAll(ASSETS);
// cache.addAll(ASSETS);
})
);
});
@@ -79,28 +83,23 @@ self.addEventListener('fetch', event => {
// Cache only strategy
event.respondWith(
caches.match(event.request)
caches.match(event.request.url)
);
} else if (is_in_array(event.request.url, NEED_UPDATE)) {
// Cache then network strategy
event.respondWith(
caches.open(auto_cache_file_version).then(async cache => {
const res = await fetch(event.request);
cache.put(event.request, res.clone());
fetch(event.request.url).then(async response => {
if (response.ok) {
const cache = await caches.open(auto_cache_file_version);
cache.put(event.request.url, response.clone());
return response;
}
return res;
throw new Error("Network response was not ok.");
}).catch(async error => {
const cache = await caches.open(auto_cache_file_version);
return cache.match(event.request.url);
})
);
} else if (event.request.url.indexOf('https://api.ipify.org?format=json') > -1) {
fetch(event.request).then(async response => {
const cache = await caches.open(auto_cache_file_version);
cache.put(event.request.url, response.clone());
return response;
}).catch(async () => {
const cache = await caches.open(auto_cache_file_version);
return await cache.match(event.request);
});
)
}
});