39 lines
1.4 KiB
JavaScript
39 lines
1.4 KiB
JavaScript
|
import { precacheAndRoute } from 'workbox-precaching';
|
||
|
import { NetworkFirst, CacheFirst, NetworkOnly } from 'workbox-strategies';
|
||
|
import { registerRoute } from 'workbox-routing';
|
||
|
import { ExpirationPlugin } from 'workbox-expiration';
|
||
|
|
||
|
precacheAndRoute(self.__WB_MANIFEST);
|
||
|
|
||
|
registerRoute(/^.*\/apps\/memories\/api\/video\/transcode\/.*/, new NetworkOnly());
|
||
|
registerRoute(/^.*\/apps\/memories\/api\/image\/jpeg\/.*/, new NetworkOnly());
|
||
|
registerRoute(/^.*\/remote.php\/.*/, new NetworkOnly());
|
||
|
registerRoute(/^.*\/apps\/files\/ajax\/download.php?.*/, new NetworkOnly());
|
||
|
|
||
|
const imageCache = new CacheFirst({
|
||
|
cacheName: 'images',
|
||
|
plugins: [
|
||
|
new ExpirationPlugin({
|
||
|
maxAgeSeconds: 3600 * 24 * 7, // days
|
||
|
maxEntries: 20000, // 20k images
|
||
|
}),
|
||
|
],
|
||
|
});
|
||
|
|
||
|
registerRoute(/^.*\/apps\/memories\/api\/image\/preview\/.*/, imageCache);
|
||
|
registerRoute(/^.*\/apps\/memories\/api\/video\/livephoto\/.*/, imageCache);
|
||
|
registerRoute(/^.*\/apps\/memories\/api\/faces\/preview\/.*/, imageCache);
|
||
|
registerRoute(/^.*\/apps\/memories\/api\/tags\/preview\/.*/, imageCache);
|
||
|
|
||
|
registerRoute(/^.*\/apps\/memories\/api\/.*/, new NetworkOnly());
|
||
|
|
||
|
registerRoute(/^.*\/.*$/, new NetworkFirst({
|
||
|
cacheName: 'pages',
|
||
|
plugins: [
|
||
|
new ExpirationPlugin({
|
||
|
maxAgeSeconds: 3600 * 24 * 7, // days
|
||
|
maxEntries: 2000, // assets
|
||
|
}),
|
||
|
],
|
||
|
}));
|