使用 Service Worker 缓存非静态 url
Cache non static url with service worker
我的工作箱(我的服务人员)中的正则表达式有点问题。
我需要缓存我的 api 的响应,这个响应是一张图片。
为此,我需要这样请求 url:https://myapi/image/12
所以我不能在我的服务工作者中包含一个特定的路径,我想我需要处理正则表达式。
我试过这个:
urlPattern: new RegExp('\/image/'),
handler: 'NetworkFirst',
options: {
networkTimeoutSeconds: 15,
cacheName: 'Saved bill img',
expiration: {
maxEntries: 25,
maxAgeSeconds: 60 * 60,
},
}
但它不起作用,有什么帮助吗?
我应该问的问题是如何在正则表达式中定义查询的开头。因此,他们对此有很多答案。这就是我所做的:
new RegExp('^https:\/\/myapi\/image/')
我不知道您使用的是哪个版本的 Workbox,但示例代码与我所知道的版本不匹配。
Common Recipes 页面显示当前版本 (5.1.3) 的语法:
import {registerRoute} from 'workbox-routing';
import {StaleWhileRevalidate} from 'workbox-strategies';
registerRoute(/\/some\/path\/some-file\.txt$/,
new StaleWhileRevalidate()
);
您使用的正则表达式有一个未转义的最后斜杠。您始终可以先在 Regex 101 上尝试正则表达式。
进一步举例,正则表达式^https:\/\/example\.com\/image\/
将匹配所有URL以https://example.com/image/
开头的请求。您可以在 JavaScript:
中使用任何这些变体
new RegExp('^https:\/\/example\.com\/image\/')
/^https:\/\/example\.com\/image\//
我的工作箱(我的服务人员)中的正则表达式有点问题。 我需要缓存我的 api 的响应,这个响应是一张图片。 为此,我需要这样请求 url:https://myapi/image/12
所以我不能在我的服务工作者中包含一个特定的路径,我想我需要处理正则表达式。 我试过这个:
urlPattern: new RegExp('\/image/'),
handler: 'NetworkFirst',
options: {
networkTimeoutSeconds: 15,
cacheName: 'Saved bill img',
expiration: {
maxEntries: 25,
maxAgeSeconds: 60 * 60,
},
}
但它不起作用,有什么帮助吗?
我应该问的问题是如何在正则表达式中定义查询的开头。因此,他们对此有很多答案。这就是我所做的:
new RegExp('^https:\/\/myapi\/image/')
我不知道您使用的是哪个版本的 Workbox,但示例代码与我所知道的版本不匹配。
Common Recipes 页面显示当前版本 (5.1.3) 的语法:
import {registerRoute} from 'workbox-routing';
import {StaleWhileRevalidate} from 'workbox-strategies';
registerRoute(/\/some\/path\/some-file\.txt$/,
new StaleWhileRevalidate()
);
您使用的正则表达式有一个未转义的最后斜杠。您始终可以先在 Regex 101 上尝试正则表达式。
进一步举例,正则表达式^https:\/\/example\.com\/image\/
将匹配所有URL以https://example.com/image/
开头的请求。您可以在 JavaScript:
new RegExp('^https:\/\/example\.com\/image\/')
/^https:\/\/example\.com\/image\//