Как сделать сайт доступным в автономном режиме с помощью Laravel Mix Workbox

У меня есть Laravel Vue PWA с использованием Laravel Mix Workbox.

В webpack.mix.js у меня есть:

mix
    .js('resources/js/app.js', 'public/js')
    .sass('resources/sass/app.scss', 'public/css')
    .generateSW({
        additionalManifestEntries: [{url: 'index.php', revision: '1'}]
    })

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

В моем основном app.js У меня есть:

import { Workbox } from 'workbox-window'
import { precacheAndRoute, createHandlerBoundToURL } from 'workbox-precaching'
import { registerRoute, NavigationRoute } from 'workbox-routing'

if ('serviceWorker' in navigator) {

    const wb = new Workbox('/service-worker.js')

    precacheAndRoute([
        { url: '/index.php', revision: '383676' }
    ])

    const handler         = createHandlerBoundToURL('/index.php')
    const navigationRoute = new NavigationRoute(handler)
    registerRoute(navigationRoute)

    wb.register()
}

Я использую Workbox Window, поскольку он утверждает, что все упрощает.

Обратите внимание, я звоню precacheAndRoute здесь, иначе я получаю ошибку createHandlerBoundToURL('/index.php') was called, but that URL is not precached. Я не понимаю, зачем это нужно, так как вижу, что index.php уже находится в массиве, переданном в precacheAndRoute в моем server-worker.js.

Я пробовал использовать окно Workbox messageSW функция вместо передачи 'CACHE_URLS' с участием index.php но это не устранило ошибку.

Цель этого фрагмента кода - зарегистрировать маршрут навигации, чтобы я мог возвращать конкретный ответ на все запросы навигации в соответствии с документацией Google по запросам навигации.

Теперь я могу просматривать сайт в Chrome, видеть, что сервис-воркер установлен, но когда я выбираю "Offline" и перезагружаю страницу, я просто получаю сообщение "Нет интернета".

Посмотрев на сеть, я вижу запрос на /dashboard не работает.

Как сделать так, чтобы мой сайт работал офлайн?

И почему сервис-воркер не использует кешированный index.php ответить на запрос?

0 ответов

Другие вопросы по тегам