Динамическое кеширование с использованием Workbox - PullRequest
0 голосов
/ 06 июня 2018

Я использую маршрутизацию рабочего ящика для динамического кэширования.Я не хочу давать фиксированный URL, поскольку он будет меняться в зависимости от взаимодействия с пользователем.Как я могу достичь этого?Я использую это, как показано ниже, но это исправлено с одним состоянием

let BASE_URL = location.protocol + "//" + location.host,
    API_URL = BASE_URL + '/ab/abc/api/'

Я хочу кэшировать все URL, которые имеют / ab / abc / api /

workbox.routing.registerRoute(API_URL, workbox.strategies.networkFirst({
  cacheName: 'abc',
  plugins: [
    new workbox.expiration.Plugin({
      maxEntries: 1
    }),
    new workbox.cacheableResponse.Plugin({
      statuses: [200]
    })
  ]

}));

1 Ответ

0 голосов
/ 07 июня 2018

Существует еще немного предыстории о том, как работает маршрутизация Workbox в документации .

Однако, чтобы ответить на ваш конкретный вопрос, вы можете создать маршрут, который соответствует регулярному выражению,и что регулярное выражение должно соответствовать только части входящего URL-адреса (например, совпадение с общим префиксом или суффиксом).

Предполагается, что ваш общий префикс /ab/abc/api/, и что ваши фактические вызовы API относятся к существующим URL-адресампо этому пути (например, /ab/abc/api/entries, /ab/abc/api/latest?t=1 и т. д.) вы можете создать маршрут, например:

workbox.routing.registerRoute(
  new RegExp('/ab/abc/api'),
  workbox.strategies.networkFirst({
    cacheName: 'abc',
    plugins: [
      new workbox.expiration.Plugin({
        maxEntries: 50
      })
    ]
}));

Еще одна вещь, которую я изменил, это maxEntries для вашего срока действия кэша,Каждый уникальный URL-адрес, соответствующий RegExp, получит свою собственную запись в кэше, и если вы установите maxEntries в 1, то в конечном итоге вы будете кэшировать только самый последний использованный URL-адрес, а срок действия всех остальных записей истекает через каждый раз.Я предполагаю, что установка его на что-то более высокое (я использовал 50, но все, что имеет смысл для вас) больше соответствует вашим намерениям.

...