Фоновая синхронизация рабочего окна - перенаправление после отправки формы пользователем

Пользователи могут отправить форму в автономном режиме, которая синхронизируется с моей базой данных с фоновой синхронизацией. Это работает, как ожидалось. Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь находится в автономном режиме и отправляет форму, которую он перенаправляет на страницу ошибки сайта, не найденную в Chrome. Пользователь должен быть перенаправлен обратно к списку всех его записей. Я подтвердил, что страница, на которую выполняется перенаправление, кэширована.

Файл рабочего сервера:

importScripts(
  "https://storage.googleapis.com/workbox-cdn/releases/6.1.2/workbox-sw.js"
);

const CACHE = "example-offline";
const QUEUE_NAME = "bgSyncQueue";

self.addEventListener("message", (event) => {
  if (event.data && event.data.type === "SKIP_WAITING") {
    self.skipWaiting();
  }
});

workbox.routing.registerRoute(
  new RegExp("/*"),
  new workbox.strategies.NetworkFirst({
    cacheName: CACHE,
  })
);

const bgSyncPlugin = new workbox.backgroundSync.BackgroundSyncPlugin(
  QUEUE_NAME,
  {
    maxRetentionTime: 24 * 60, // Retry for max of 24 Hours (specified in minutes)
  }
);

workbox.routing.registerRoute(
  new RegExp("^https://example.com/[a-zA-Z]+/journal"),
  new workbox.strategies.NetworkOnly({
    plugins: [bgSyncPlugin],
  }),
  "POST"
);

person doobe01    schedule 07.04.2021    source источник
comment
Как вы запускаете перенаправление?   -  person abraham    schedule 08.04.2021
comment
Перенаправление находится в моем контроллере. Использование фреймворка Laravel. Я могу сказать, что он перенаправляется на правильную страницу, но по какой-то причине он не использует кешированную страницу.   -  person doobe01    schedule 09.04.2021


Ответы (1)


Маршрут для страницы перенаправления должен иметь такую ​​стратегию, как CacheOnly или StaleWhileREvalidate. Сообщение, которое вы получаете, показывает, что браузер пытается подключиться к сети, чтобы получить страницу.

person pl4n3th    schedule 13.04.2021
comment
Я пробовал это, но до сих пор не работает. workbox.routing.registerRoute( new RegExp("^https://example.com/[a-zA-Z]+/journal"), new workbox.strategies.StaleWhileRevalidate({ cacheName: CACHE, }), ); - person doobe01; 15.04.2021