Dive into secure and efficient coding practices with our curated list of the top 10 examples showcasing 'workbox-routing' in functional components in JavaScript. Our advanced machine learning engine meticulously scans each line of code, cross-referencing millions of open source libraries to ensure your implementation is not just functional, but also robust and secure. Elevate your React applications to new heights by mastering the art of handling side effects, API calls, and asynchronous operations with confidence and precision.
ampAssetsCaching() {
// Versioned Assets
router.registerRoute(
VERSIONED_ASSETS_RE,
new CacheFirst({
cacheName: VERSIONED_CACHE_NAME,
plugins: [
new Plugin({
maxAgeSeconds: 14 * 24 * 60 * 60, // 14 days
}),
],
}),
);
// Unversioned runtimes
router.registerRoute(
UNVERSIONED_RUNTIME_RE,
new StaleWhileRevalidate({
cacheName: UNVERSIONED_CACHE_NAME,
// Unversioned runtimes
router.registerRoute(
UNVERSIONED_RUNTIME_RE,
new StaleWhileRevalidate({
cacheName: UNVERSIONED_CACHE_NAME,
plugins: [
new Plugin({
maxAgeSeconds: 7 * 24 * 60 * 60, // 7 days
}),
],
}),
);
// Unversioned Extensions
router.registerRoute(
UNVERSIONED_EXTENSIONS_RE,
new StaleWhileRevalidate({
cacheName: UNVERSIONED_CACHE_NAME,
plugins: [
new Plugin({
maxAgeSeconds: 24 * 60 * 60, // 1 day
}),
],
}),
);
}
ampAssetsCaching() {
// Versioned Assets
router.registerRoute(
VERSIONED_ASSETS_RE,
new CacheFirst({
cacheName: VERSIONED_CACHE_NAME,
plugins: [
new Plugin({
maxAgeSeconds: 14 * 24 * 60 * 60, // 14 days
}),
],
}),
);
// Unversioned runtimes
router.registerRoute(
UNVERSIONED_RUNTIME_RE,
new StaleWhileRevalidate({
cacheName: UNVERSIONED_CACHE_NAME,
plugins: [
new Plugin({
maxAgeSeconds: 7 * 24 * 60 * 60, // 7 days
}),
],
}),
);
// Unversioned Extensions
router.registerRoute(
UNVERSIONED_EXTENSIONS_RE,
new StaleWhileRevalidate({
cacheName: UNVERSIONED_CACHE_NAME,
export const init = () => {
const precacheRouter = new Router();
registerRoutes(precacheRouter, precacheRoutes);
precacheRouter.addFetchListener();
const runtimeRouter = new Router();
registerRoutes(runtimeRouter, runtimeRoutes);
runtimeRouter.addFetchListener();
// Only add the cache listener for runtime routes.
runtimeRouter.addCacheListener();
const logRouter = new Router();
registerRoutes(logRouter, logRoutes);
logRouter.addFetchListener();
};
export const init = () => {
const precacheRouter = new Router();
registerRoutes(precacheRouter, precacheRoutes);
precacheRouter.addFetchListener();
const runtimeRouter = new Router();
registerRoutes(runtimeRouter, runtimeRoutes);
runtimeRouter.addFetchListener();
// Only add the cache listener for runtime routes.
runtimeRouter.addCacheListener();
const logRouter = new Router();
registerRoutes(logRouter, logRoutes);
logRouter.addFetchListener();
};
export const init = () => {
const precacheRouter = new Router();
registerRoutes(precacheRouter, precacheRoutes);
precacheRouter.addFetchListener();
const runtimeRouter = new Router();
registerRoutes(runtimeRouter, runtimeRoutes);
runtimeRouter.addFetchListener();
// Only add the cache listener for runtime routes.
runtimeRouter.addCacheListener();
const logRouter = new Router();
registerRoutes(logRouter, logRoutes);
logRouter.addFetchListener();
};
const createCollectRoutes = (bgSyncPlugin: BackgroundSyncPlugin) => {
const match = ({url}: RouteMatchCallbackOptions) =>
url.hostname === GOOGLE_ANALYTICS_HOST &&
COLLECT_PATHS_REGEX.test(url.pathname);
const handler = new NetworkOnly({
plugins: [bgSyncPlugin],
});
return [
new Route(match, handler, 'GET'),
new Route(match, handler, 'POST'),
];
};
const createCollectRoutes = (bgSyncPlugin: BackgroundSyncPlugin) => {
const match = ({url}: RouteMatchCallbackOptions) =>
url.hostname === GOOGLE_ANALYTICS_HOST &&
COLLECT_PATHS_REGEX.test(url.pathname);
const handler = new NetworkOnly({
plugins: [bgSyncPlugin],
});
return [
new Route(match, handler, 'GET'),
new Route(match, handler, 'POST'),
];
};
/.*cdn\.jsdelivr\.net/,
new CacheFirst({
cacheName: 'jsdelivr-v1',
fetchOptions: {
credentials: 'omit',
mode: 'cors',
},
plugins: [
new ExpirationPlugin({ maxAgeSeconds: oneWeek, purgeOnQuotaError: true }),
],
}),
)
//#endregion
//#region JavaScript files
registerRoute(
/.+\/app\/\w{2,3}\.\w{7}\.js$/,
new CacheFirst({
cacheName: 'javascript-v1',
fetchOptions: {
credentials: 'omit',
mode: 'cors',
},
plugins: [
new ExpirationPlugin({ maxAgeSeconds: oneWeek, purgeOnQuotaError: true }),
],
}),
)
registerRoute(
/.+\/plugins\/.+\.js$/,
new StaleWhileRevalidate({
cacheName: 'javascript-v1',
new AmpDocumentCachablePlugin({
maxEntries: documentCachingOptions.maxDocumentsInCache || 10,
maxAgeSeconds:
documentCachingOptions.maxAgeSecondsforDocumentsInCache ||
5 * 24 * 60 * 60,
allowedNonAMPPages: documentCachingOptions.allowedNonAMPPages,
}),
],
networkTimeoutSeconds: documentCachingOptions.timeoutSeconds,
},
fallbackOfflinePageUrl,
),
navigationPreloadOptions,
);
router.registerRoute(navRoute);
return navRoute;
}