Improve caching of map tiles and everything else

Skylar Ittner 4 years ago
parent 08d7ff224d
commit af783bb415

@ -0,0 +1,151 @@
/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
var cachedurls = [
'package.json',
'settings.js',
'index.html',
'.',
'routes.js',
'cache.js',
'assets/audio/error.mp3',
'assets/audio/ok.mp3',
'assets/audio/scan.mp3',
'assets/images/icons/logo.svg',
'assets/images/barcode-dashed.svg',
'assets/images/boxes.png',
'assets/images/box-open-dashed.svg',
'assets/images/box.png',
'assets/images/check.png',
'assets/images/envelope.png',
'assets/images/envelopes.png',
'assets/images/express.png',
'assets/images/history-dashed.svg',
'assets/images/largeboxes.png',
'assets/images/largebox.png',
'assets/images/multiple-items.png',
'assets/images/note-dashed.svg',
'assets/images/signature.png',
'assets/images/signatures.png',
'assets/images/smallpackage.png',
'assets/images/smallpackages.png',
'assets/css/app.css',
'assets/css/backdrop.css',
'assets/css/oled.css',
'assets/css/web-barcode.css',
'assets/js/audio.js',
'assets/js/autofill.js',
'assets/js/list.js',
'assets/js/location.js',
'assets/js/login.js',
'assets/js/main.js',
'assets/js/manage.js',
'assets/js/map.js',
'assets/js/map_leaflet.js',
'assets/js/map_mapbox.js',
'assets/js/notes.js',
'assets/js/packages.js',
'assets/js/platform.js',
'assets/js/settings.js',
'assets/js/storage.js',
'assets/js/sync.js',
'assets/js/toolbox_scannerentries.js',
'assets/js/toolbox_scanner.js',
'assets/js/toolbox_sharelist.js',
'assets/js/toolbox_track.js',
'assets/js/toolbox_weather.js',
'assets/js/util.js',
'pages/credits.html',
'pages/home.html',
'pages/list.html',
'pages/login.html',
'pages/manage.html',
'pages/map.html',
'pages/myroute.html',
'pages/settings.html',
'pages/toolbox.html',
'pages/help/list.html',
'pages/help/map.html',
'pages/myroute/editnote.html',
'pages/toolbox/scanner.html',
'pages/toolbox/sharelist.html',
'pages/toolbox/track.html',
'pages/toolbox/trackinginfo.html',
'pages/toolbox/weather.html',
'pages/toolbox/scanner/entries.html',
'pages/toolbox/scanner/scanner.html',
'node_modules/framework7/css/framework7.bundle.min.css',
'node_modules/@fortawesome/fontawesome-free/css/all.min.css',
'node_modules/material-design-icons/iconfont/material-icons.css',
'node_modules/leaflet/dist/leaflet.css',
'node_modules/leaflet.markercluster/dist/MarkerCluster.css',
'node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css',
'node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.css',
'node_modules/mapbox-gl/dist/mapbox-gl.css',
'node_modules/framework7/js/framework7.bundle.min.js',
'node_modules/jquery/dist/jquery.min.js',
'node_modules/leaflet/dist/leaflet.js',
'node_modules/leaflet.markercluster/dist/leaflet.markercluster.js',
'node_modules/mapbox-gl/dist/mapbox-gl.js',
'node_modules/jsbarcode/dist/JsBarcode.all.min.js',
'node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.js',
'node_modules/@zxing/library/umd/index.min.js',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.ttf',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.woff',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.woff2'
];
for (i in SETTINGS.maptileurls) {
cachedurls.push(SETTINGS.maptileurls[i].json);
}
for (i in SETTINGS.alertsounds) {
cachedurls.push("assets/audio/" + SETTINGS.alertsounds[i].file);
}
for (i in SETTINGS.weathericons) {
cachedurls.push("assets/images/weather-" + SETTINGS.weathericons[i] + ".svg");
}
function fillCache(cachename) {
if ('caches' in window) {
// delete old caches
caches.keys().then(function (cacheNames) {
return Promise.all(cacheNames.map(function (oldCacheName) {
if (oldCacheName != cachename) {
return caches.delete(oldCacheName);
}
}));
});
caches.open(cachename).then(function (cache) {
for (i in cachedurls) {
cache.add(cachedurls[i]);
}
});
// Do it again in a little while to reduce chance of errors
setTimeout(function () {
fillCache(cachename);
}, 1000 * 30);
}
}

@ -65,18 +65,17 @@
<script src="routes.js"></script>
<script src="assets/js/main.js"></script>
<script src="cache.js"></script>
<script>
if (platform_type != "cordova" && platform_type != "nw") {
if ('serviceWorker' in navigator) {
// Register a service worker hosted at the root of the
// site using the default scope.
navigator.serviceWorker.register('sw.js').then(function (registration) {
console.log('Service worker registration succeeded:', registration);
}, /*catch*/ function (error) {
console.log('Service worker registration failed:', error);
});
} else {
console.log('Service workers are not supported.');
}
fillCache(SETTINGS.cacheversion);
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('sw.js').then(function (registration) {
console.log('Service worker registration succeeded:', registration);
}, /*catch*/ function (error) {
console.log('Service worker registration failed:', error);
});
} else {
console.log('Service workers are not supported.');
}
</script>

@ -5,6 +5,7 @@
*/
var SETTINGS = {
cacheversion: "v1.4.0_3",
maptileurls: {
liberty: {
url: "https://maps.netsyms.net/styles/osm-liberty/{z}/{x}/{y}.png",
@ -326,8 +327,6 @@ var SETTINGS = {
weatherapi: "https://apis.netsyms.net/packagehelper/weather.php",
geoipapi: "https://apis.netsyms.net/packagehelper/geoip.php",
sharelistapi: "https://apis.netsyms.net/packagehelper/sharepackagelist.php",
// loginurl: "http://localhost/packagehelperapi/login/",
// syncapi: "http://localhost/packagehelperapi/sync.php"
loginurl: "https://apis.netsyms.net/packagehelper/login/",
syncapi: "https://apis.netsyms.net/packagehelper/sync.php"
}

@ -4,166 +4,29 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
var currentCache = 'v1.4.0_20200107_2';
self.addEventListener('fetch', function (event) {
event.respondWith(caches.match(event.request).then(function (response) {
return response || fetch(event.request);
}));
});
self.addEventListener('activate', (event) => {
event.waitUntil(caches.keys().then((keyList) => {
return Promise.all(keyList.map((key) => {
if (currentCache != key) {
return caches.delete(key);
}
}));
}));
var cachename = "v1.4.0_3";
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request).then((resp) => {
return resp || fetch(event.request).then((response) => {
return caches.open(cachename).then((cache) => {
cache.put(event.request, response.clone());
return response;
});
});
})
);
});
self.addEventListener('install', function (event) {
event.waitUntil(
caches.open(currentCache).then((cache) => {
caches.open(cachename).then((cache) => {
return cache.addAll([
'index.html',
'.',
'assets/audio/alert.coin.mp3',
'assets/audio/alert.jump.mp3',
'assets/audio/alert.robot.mp3',
'assets/audio/alert.sonar.mp3',
'assets/audio/error.mp3',
'assets/audio/ok.mp3',
'assets/audio/scan.mp3',
'assets/images/icons/logo.svg',
'assets/images/barcode-dashed.svg',
'assets/images/boxes.png',
'assets/images/boxes.svg',
'assets/images/box-open-dashed.svg',
'assets/images/box.png',
'assets/images/box.svg',
'assets/images/check.png',
'assets/images/check.svg',
'assets/images/envelope.png',
'assets/images/envelopes.png',
'assets/images/envelopes.svg',
'assets/images/envelope.svg',
'assets/images/express.png',
'assets/images/express.svg',
'assets/images/history-dashed.svg',
'assets/images/largeboxes.png',
'assets/images/largeboxes.svg',
'assets/images/largebox.png',
'assets/images/largebox.svg',
'assets/images/multiple-items.png',
'assets/images/multiple-items.svg',
'assets/images/note-dashed.svg',
'assets/images/signature.png',
'assets/images/signatures.png',
'assets/images/signatures.svg',
'assets/images/signature.svg',
'assets/images/smallpackage.png',
'assets/images/smallpackages.png',
'assets/images/smallpackages.svg',
'assets/images/smallpackage.svg',
'assets/images/weather-clear.svg',
'assets/images/weather-cloudy.svg',
'assets/images/weather-none.svg',
'assets/images/weather-partly-cloudy.svg',
'assets/images/weather-rain.svg',
'assets/images/weather-snow.svg',
'assets/images/weather-windy.svg',
'assets/css/app.css',
'assets/css/backdrop.css',
'assets/css/oled.css',
'assets/css/web-barcode.css',
'assets/js/audio.js',
'assets/js/autofill.js',
'assets/js/list.js',
'assets/js/location.js',
'assets/js/login.js',
'assets/js/main.js',
'assets/js/manage.js',
'assets/js/map.js',
'assets/js/map_leaflet.js',
'assets/js/map_mapbox.js',
'assets/js/notes.js',
'assets/js/packages.js',
'assets/js/platform.js',
'assets/js/settings.js',
'assets/js/storage.js',
'assets/js/sync.js',
'assets/js/toolbox_scannerentries.js',
'assets/js/toolbox_scanner.js',
'assets/js/toolbox_sharelist.js',
'assets/js/toolbox_track.js',
'assets/js/toolbox_weather.js',
'assets/js/util.js',
'pages/credits.html',
'pages/home.html',
'pages/list.html',
'pages/login.html',
'pages/manage.html',
'pages/map.html',
'pages/myroute.html',
'pages/settings.html',
'pages/toolbox.html',
'pages/help/list.html',
'pages/help/map.html',
'pages/myroute/editnote.html',
'pages/toolbox/scanner.html',
'pages/toolbox/sharelist.html',
'pages/toolbox/track.html',
'pages/toolbox/trackinginfo.html',
'pages/toolbox/weather.html',
'pages/toolbox/scanner/entries.html',
'pages/toolbox/scanner/scanner.html',
'package.json',
'settings.js',
'node_modules/framework7/css/framework7.bundle.min.css',
'node_modules/@fortawesome/fontawesome-free/css/all.min.css',
'node_modules/material-design-icons/iconfont/material-icons.css',
'node_modules/leaflet/dist/leaflet.css',
'node_modules/leaflet.markercluster/dist/MarkerCluster.css',
'node_modules/leaflet.markercluster/dist/MarkerCluster.Default.css',
'node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.css',
'node_modules/mapbox-gl/dist/mapbox-gl.css',
'node_modules/framework7/js/framework7.bundle.min.js',
'node_modules/jquery/dist/jquery.min.js',
'node_modules/leaflet/dist/leaflet.js',
'node_modules/leaflet.markercluster/dist/leaflet.markercluster.js',
'node_modules/mapbox-gl/dist/mapbox-gl.js',
'node_modules/jsbarcode/dist/JsBarcode.all.min.js',
'node_modules/leaflet.locatecontrol/dist/L.Control.Locate.min.js',
'/node_modules/@zxing/library/umd/index.min.js',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.eot',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.svg',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-brands-400.woff2',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.eot',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.svg',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-regular-400.woff2',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.eot',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.svg',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.ttf',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff',
'node_modules/@fortawesome/fontawesome-free/webfonts/fa-solid-900.woff2',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.eot',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.ijmap',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.svg',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.ttf',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.woff',
'node_modules/material-design-icons/iconfont/MaterialIcons-Regular.woff2'
"https://maps.netsyms.net/styles/osm-liberty/style.json",
"https://maps.netsyms.net/styles/klokantech-terrain/style.json",
"https://maps.netsyms.net/styles/fiord-color/style.json",
"https://maps.netsyms.net/styles/oled-black/style.json"
]);
}));
});
Loading…
Cancel
Save