Я использую Workbox для предварительного кэширования файлов для моего сайта Django.Но я изо всех сил стараюсь настроить URL-маршрутизацию, чтобы рабочий ящик предварительно кэшировал полностью отображаемые HTML-страницы.
Все, что я помещаю прямо в serviceworker.js, будет правильно кэшировать страницу ПОСЛЕ того, как я посещаю ее (делая ее доступной позже в автономном режиме), например:
// serviceworker.js
importScripts('https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js');
BASE_URL = location.protocol + "//" + location.host
workbox.routing.registerRoute(
new RegExp(BASE_URL+'/pricing/'),
workbox.strategies.staleWhileRevalidate({
cacheName: 'pricing-cache', // Use a custom cache name.
})
);
workbox.precaching.precacheAndRoute([])
Проблема: Следующий код правильно внедряет ФАЙЛЫ, которые я хочу предварительно кэшировать в мой сервисный работник.НО Как изменить приведенный ниже код для предварительного кэширования отображаемых HTML-страниц (вместе с зависимостями страницы, такими как .js и .css), отображаемых с помощью представлений Django?
// This file resides in [root directory]/GulpApp/Gulpfile.js:
gulp.task('service-worker', () => {
return workboxBuild.injectManifest({
maximumFileSizeToCacheInBytes: 4 * 1024 * 1024,
swSrc: '../browsepagesAPP/templates/browsepages/workbox-sw.js',
swDest: '../browsepagesAPP/templates/browsepages/serviceworker.js',
globDirectory: '../browsepagesAPP/',
globPatterns: [
'**\/*.{js,css}',
],
globIgnores: ['app-assets\/**']
}).then(({count, size, warnings}) => {
// Optionally, log any warnings and details.
warnings.forEach(console.warn);
console.log(`${count} files will be precached, totaling ${size} bytes.`);
});
});
Я уверен, что мои настройки для globDirectory
неверны.И так как я использую маршрутизацию URL Djangos для рендеринга представлений, я подозреваю, что мне нужно будет сделать аксиос вызов этого представления?Здесь решение становится неясным для меня ...
Заранее благодарю за помощь!