Сервисный работник: кеш HTML? - PullRequest
1 голос
/ 09 марта 2020

Я пишу веб-страницу Библии, и я хочу использовать работника службы.

У меня есть следующий код в моем работнике службы. js:

var CACHE_NAME = 'my-site-cache-v1';
var urlsToCache = [
  '/',
  '/verse/_verse.js',
  '/verse/_verse.css',
  '/home/_home.js',
  '/home/_home.css',
  '/bookmarks/_bookmarks.js',
  '/bookmarks/_bookmarks.css',
  '/search/_search.js',
  '/search/_search.css'
];

self.addEventListener('install', function(event) {
  // Perform install steps
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        console.log('Opened cache');
        return cache.addAll(urlsToCache);
      })
  );
});


self.addEventListener('fetch', function(event) {
event.respondWith(
    caches.match(event.request)
    .then(function(response) {
        // Cache hit - return response
        if (response) {
            console.log("found response")
            console.log(event.request.url)
            return response;
        }
        return fetch(event.request).then(
            function(response) {
                // Check if we received a valid response
                if(!response || response.status !== 200 || response.type !== 'basic') {
                    return response;
                }

                // IMPORTANT: Clone the response. A response is a stream
                // and because we want the browser to consume the response
                // as well as the cache consuming the response, we need
                // to clone it so we have two streams.
                var responseToCache = response.clone();

                caches.open(CACHE_NAME)
                    .then(function(cache) {
                    cache.put(event.request, responseToCache);
                });

                return response;
            }
        );
    })
);
});

Это, в основном, код, взятый из введения работника сервиса Google. Однако, похоже, он только кэширует изображения, css, js и файлы шрифтов - но я бы хотел, чтобы он кешировался HTML страницы, чтобы сделать ее действительно доступной в автономном режиме.

Весь мой контент на моем сайте перенаправляется на index.php и подается оттуда на основе REQUEST_URI. Как я могу изменить код работника службы, чтобы сохранить HTML запроса URI и обработать его в случае его отсутствия в сети?

...