Как предварительно кэшировать визуализированные представления Django с помощью Workbox (URL Routing) - PullRequest
2 голосов
/ 12 июня 2019

Я использую 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 для рендеринга представлений, я подозреваю, что мне нужно будет сделать аксиос вызов этого представления?Здесь решение становится неясным для меня ...

Заранее благодарю за помощь!

...