子文件夹中图像的工作箱路由
Workbox routing for images in subfolders
我正在使用工作箱来管理我的资产缓存,效果很好。
我在缓存图像时遇到 1 或 2 个正则表达式问题:
我正在尝试缓存图像文件夹和图标子文件夹中的所有图像(下面的文件夹结构图像)
我尝试了以下方法来尝试缓存图像:
workbox.routing.registerRoute(
/images\/.(?:png|gif|jpg|jpeg|svg|ico|webp)$/, //<-- Regexp
workbox.strategies.cacheFirst({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 100,
maxAgeSeconds: 60 * 60 * 24 * 365
}),
],
}),
);
//I also tried a regexp on the entire images folder
workbox.routing.registerRoute(
new RegExp('^/images/'), //<-- Regexp
workbox.strategies.cacheFirst({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 100,
maxAgeSeconds: 60 * 60 * 24 * 365
}),
],
}),
);
我在上面包含了代码示例,以便为我想要实现的目标提供上下文
如有任何帮助,我们将不胜感激!
文件夹结构:
您可以通过几种不同的方式在 Workbox 中定义路线。虽然您可以将 RegExp 作为第一个参数传递给 registerRoute()
,就像您正在做的那样,您可以改为传递 matchCallback
function,它可以检查传入的请求和 return "truthy" 或 false 值,具体取决于您是否希望路由触发。
Workbox 文档中有一个 recipe 用于根据 request.destination
值设置路由,对于在您的页面上用作图像的子资源,该值将是 'image'
。如果你想限制你的路线,你可以将它与检查 matchCallback
中的 url.pathname
结合起来,以便它只匹配特定子文件夹中的图像。
所以,综合起来,它看起来像:
workbox.routing.registerRoute(
({request, url}) => request.destination === 'image' &&
url.pathname.startsWith('/images'),
workbox.strategies.cacheFirst({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 100,
maxAgeSeconds: 60 * 60 * 24 * 365
}),
],
})
);
我正在使用工作箱来管理我的资产缓存,效果很好。
我在缓存图像时遇到 1 或 2 个正则表达式问题:
我正在尝试缓存图像文件夹和图标子文件夹中的所有图像(下面的文件夹结构图像)
我尝试了以下方法来尝试缓存图像:
workbox.routing.registerRoute(
/images\/.(?:png|gif|jpg|jpeg|svg|ico|webp)$/, //<-- Regexp
workbox.strategies.cacheFirst({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 100,
maxAgeSeconds: 60 * 60 * 24 * 365
}),
],
}),
);
//I also tried a regexp on the entire images folder
workbox.routing.registerRoute(
new RegExp('^/images/'), //<-- Regexp
workbox.strategies.cacheFirst({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 100,
maxAgeSeconds: 60 * 60 * 24 * 365
}),
],
}),
);
我在上面包含了代码示例,以便为我想要实现的目标提供上下文
如有任何帮助,我们将不胜感激!
文件夹结构:
您可以通过几种不同的方式在 Workbox 中定义路线。虽然您可以将 RegExp 作为第一个参数传递给 registerRoute()
,就像您正在做的那样,您可以改为传递 matchCallback
function,它可以检查传入的请求和 return "truthy" 或 false 值,具体取决于您是否希望路由触发。
Workbox 文档中有一个 recipe 用于根据 request.destination
值设置路由,对于在您的页面上用作图像的子资源,该值将是 'image'
。如果你想限制你的路线,你可以将它与检查 matchCallback
中的 url.pathname
结合起来,以便它只匹配特定子文件夹中的图像。
所以,综合起来,它看起来像:
workbox.routing.registerRoute(
({request, url}) => request.destination === 'image' &&
url.pathname.startsWith('/images'),
workbox.strategies.cacheFirst({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 100,
maxAgeSeconds: 60 * 60 * 24 * 365
}),
],
})
);