Есть ли проблема с модулем типа сценария предварительного кэширования? - PullRequest
1 голос
/ 29 июня 2019

Я работаю над проектом на стороне PWA, поэтому, когда я предварительно кэширую модуль типа сценария, браузер не может извлечь сценарий в автономном режиме, но когда я использую другую стратегию для кэширования, т.е. «при ответе по сети; возврат из кэша, если совпадение найдено, или добавление в кэш» работает нормально в автономном режиме.

self.addEventListener('fetch', e => {
    e.respondWith(
        caches.open(cacheVersion)
            .then(cache => cache.match(e.request)
                .then(res => res || fetch(e.request)
                    .then(res => {
                        cache.put(e.request, res.clone());
                        return res;
                    }).catch(err => {
                        console.log('Fetch failed');
                    })
                )
            )
    );
});

Браузер не может извлечь скрипт, когда я использую следующую стратегию извлечения

e.respondWith(
        fetch(e.request)
            .catch(() => caches.match(e.request))
    );

Вот как я проповедую свои активы при использовании этой стратегии

cache.addAll([
    '/',
    '/style.css',
    '/src/app.js',
    '/src/router/index.js',
    '/src/router/Route.js',
    '/src/router/Router.js',
    '/src/views/home.js',
    '/src/views/offline.js',
    '/src/views/post.js'
]);

Это все файлы модуля javascript, где app.js является основным файлом ввода

<script src="src/app.js" type="module"></script>

Если вам нужен полный исходный код, вы можете найти его по ссылке ниже https://github.com/vijitail/headless-wordpress-pwa

...