Cache non stati c url с сервис-воркером - PullRequest
0 голосов
/ 19 июня 2020

У меня небольшая проблема с регулярным выражением в рабочем поле (мой сервисный работник). Мне нужно кешировать ответ моего 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,
                    },
                }

, но это не работает, есть помощь?

Ответы [ 2 ]

0 голосов
/ 25 июня 2020

Я не знаю, какую версию Workbox вы используете, но пример кода не соответствует известной мне версии.

Страница Общие рецепты показывает этот синтаксис для текущая версия (5.1.3):

import {registerRoute} from 'workbox-routing';
import {StaleWhileRevalidate} from 'workbox-strategies';

registerRoute(/\/some\/path\/some-file\.txt$/,
  new StaleWhileRevalidate()
);

Регулярные выражения, которые вы используете, имеют неэкранированный финальный sla sh. Вы всегда можете сначала попробовать регулярные выражения на Regex 101 .

В качестве дополнительного примера, регулярное выражение ^https:\/\/example\.com\/image\/ будет соответствовать всем запросам, URL-адрес которых начинается с https://example.com/image/. Вы можете использовать любой из этих вариантов в JavaScript:

  • new RegExp('^https:\/\/example\.com\/image\/')
  • /^https:\/\/example\.com\/image\//
0 голосов
/ 19 июня 2020

Вопрос, который я должен задать, заключался в том, как определить начало запроса в регулярном выражении. И на этот счет у них много ответов. Вот что я сделал:

new RegExp('^https:\/\/myapi\/image/')
...