bbccb8a79b
No point caching all the images for a week Also they take up A LOT of space
64 lines
1.8 KiB
JavaScript
64 lines
1.8 KiB
JavaScript
import { CacheableResponsePlugin } from 'workbox-cacheable-response';
|
|
import { ExpirationPlugin } from 'workbox-expiration';
|
|
import { RegExpRoute, registerRoute, Route } from 'workbox-routing';
|
|
import { CacheFirst, StaleWhileRevalidate } from 'workbox-strategies';
|
|
|
|
const imageRoute = new Route(
|
|
({ request, sameOrigin }) => {
|
|
const isRemote = !sameOrigin;
|
|
const isImage = request.destination === 'image';
|
|
const isAvatar = request.url.includes('/avatars/');
|
|
const isEmoji = request.url.includes('/emoji/');
|
|
return isRemote && isImage && (isAvatar || isEmoji);
|
|
},
|
|
new CacheFirst({
|
|
cacheName: 'remote-images',
|
|
plugins: [
|
|
new ExpirationPlugin({
|
|
maxEntries: 100,
|
|
maxAgeSeconds: 7 * 24 * 60 * 60, // 7 days
|
|
purgeOnQuotaError: true,
|
|
}),
|
|
new CacheableResponsePlugin({
|
|
statuses: [0, 200],
|
|
}),
|
|
],
|
|
}),
|
|
);
|
|
registerRoute(imageRoute);
|
|
|
|
// Cache /instance because masto.js has to keep calling it while initializing
|
|
const apiExtendedRoute = new RegExpRoute(
|
|
/^https?:\/\/[^\/]+\/api\/v\d+\/instance/,
|
|
new StaleWhileRevalidate({
|
|
cacheName: 'api-extended',
|
|
plugins: [
|
|
new ExpirationPlugin({
|
|
maxAgeSeconds: 24 * 60 * 60, // 1 day
|
|
}),
|
|
new CacheableResponsePlugin({
|
|
statuses: [0, 200],
|
|
}),
|
|
],
|
|
}),
|
|
);
|
|
registerRoute(apiExtendedRoute);
|
|
|
|
// Not caching API requests, doesn't seem to be necessary fo now
|
|
//
|
|
// const apiRoute = new RegExpRoute(
|
|
// /^https?:\/\/[^\/]+\/api\//,
|
|
// new StaleWhileRevalidate({
|
|
// cacheName: 'api',
|
|
// plugins: [
|
|
// new ExpirationPlugin({
|
|
// maxAgeSeconds: 60, // 1 minute
|
|
// }),
|
|
// new CacheableResponsePlugin({
|
|
// statuses: [0, 200],
|
|
// }),
|
|
// ],
|
|
// }),
|
|
// );
|
|
// registerRoute(apiRoute);
|