navigateFallback — это ключевой параметр библиотеки
sw-precache, отвечающий за обработку навигационных
запросов, когда пользователь запрашивает URL, не соответствующий
конкретному файлу в кэше. Он особенно полезен для SPA (Single Page
Application), где маршрутизация осуществляется на стороне клиента, а
сервер фактически возвращает один HTML-файл для всех путей.
navigateFallback задаёт путь к файлу (обычно HTML),
который будет возвращён сервис-воркером при навигационных запросах, если
соответствующая запись в кэше отсутствует. Типичное применение:
navigateFallback: '/index.html'
Принцип работы:
/profile в браузере./profile.navigateFallback (/index.html)./profile.Таким образом обеспечивается работоспособность клиентской маршрутизации при offline-доступе.
navigateFallbackПри конфигурации параметра важно учитывать несколько моментов:
navigateFallback: '/app/index.html'
Использование вместе с
navigateFallbackWhitelist и
navigateFallbackBlacklist Для более точного
контроля navigateFallback может быть ограничен с помощью
регулярных выражений.
navigateFallbackWhitelist — массив RegExp, определяющий
URL, для которых будет применяться fallback.navigateFallbackBlacklist — массив RegExp, исключающий
определённые URL из применения fallback.Пример конфигурации:
navigateFallback: '/index.html',
navigateFallbackWhitelist: [/^\/(about|profile)/],
navigateFallbackBlacklist: [/^\/api\//]
В этом примере:
/about и
/profile будут возвращать /index.html./api/... будут исключены, fallback не
применяется.navigateFallback, должен присутствовать в precache. Если
он не закэширован, сервис-воркер вернёт ошибку 404 при
попытке использовать fallback.Не для всех типов запросов
navigateFallback срабатывает только для навигационных
запросов (Request.mode === 'navigate'). Запросы к ресурсам
типа CSS, JS, изображений не затрагиваются.
Не заменяет динамический кэш Если приложение использует runtime caching для отдельных ресурсов, fallback не применится к этим запросам. Он предназначен исключительно для маршрутов, которые возвращают HTML.
Проблемы с глубокими путями Для SPA с вложенными
маршрутами важно правильно настроить сервис-воркер и сервер. Например,
если сервер настроен на возврат 404 для /profile/settings,
fallback может не сработать без корректного включения
/index.html в precache.
Конфликты с
ignoreUrlParametersMatching Если в URL есть
query-параметры, ignoreUrlParametersMatching может изменить
обработку, и сервис-воркер не будет использовать fallback для
модифицированных URL.
Поддержка только относительных и абсолютных
путей Указание внешнего URL
(https://example.com/index.html) не поддерживается. Файл
должен находиться в пределах собственного сайта.
navigateFallbackWhitelist и
navigateFallbackBlacklist для точного контроля
маршрутов.navigateFallback с динамическим кэшированием
для оптимальной производительности SPA.Эта настройка делает sw-precache мощным инструментом
для поддержки оффлайн-режима в SPA, обеспечивая корректное поведение
приложения даже при отсутствии сети и минимизируя вероятность получения
ошибки 404 при навигации.