Рабочий ящик, не распознающий регулярное выражение корневого URL-адреса /^/$/, добавлен в черный список резервных вариантов навигации

У меня есть SPA с сервисным работником, созданным с помощью плагина Workbox webpack. Корневой URL-адрес «/» — это отдельная домашняя страница для моего веб-сайта, а не часть моего SPA, поэтому я хочу, чтобы мой сервисный работник не возвращался к оболочке приложения моего SPA, а вместо этого извлекал домашнюю страницу с сервера, когда я перехожу к « /". Я знаю, что в workbox есть опция navigationFallbackBlacklist для указания шаблонов URL-адресов, которые не являются частью SPA. Этот параметр работает для нескольких других путей URL-адресов, которые есть на моем веб-сайте, но не для корневого URL-адреса. Мне интересно, есть ли обходные пути для моего варианта использования.


227
1

Ответ:

Работает на ми: С workbox-build и generateSw:

    ...
       runtimeCaching: [
        {
            urlPattern: /^https://(www\.)?test.local(/)?$/,
            handler: 'NetworkFirst', 
            options: {
                cacheName: 'home-page',
                expiration: {
                    maxAgeSeconds: 30 * 24 * 60 * 60, // 30 DAYS
                    maxEntries: 1
                }
            }
        },

Или написать вручную:

workbox.routing.registerRoute(
    /^https://(www\.)?test.local(/)?$/,
    workbox.strategies.networkFirst({
        cacheName: 'home-page',
        ...
    })
)
(NetworkFirst handler mode is important, in many cases)