В настоящее время я работаю над доказательством концепции проекта, но я просто не могу разобраться
- документация
- и реализация:)
Дело выглядит следующим образом:
У меня есть основное приложение (React), в котором есть список ссылок. Все они ссылаются на конкретную страницу c. Эти ссылки открываются в iframe. Вот и все.
Итак, мое приложение работает на «app.domain.com», а URL-адреса форм похожи на «pages.domain.com/pages/pageA.html» et c. Что мне нужно сделать в этом po c, так это сделать эти страницы доступными офлайн, включая (!) Ресурсы для этих страниц (css / js / img)
Я уже создал простого сервис-воркера.
const CACHE_NAME = "poc-forms";
self.addEventListener("install", (event) => {
console.log("sw installing…");
});
self.addEventListener("activate", (event) => {
console.log("sw now ready to handle fetches");
event.waitUntil(caches.open(CACHE_NAME).then(() => self.clients.claim()));
});
self.addEventListener("fetch", (event) => {
const url = new URL(event.request.url);
if (url.pathname.includes("forms")) {
event.respondWith(
(async function () {
var cache = await caches.open(CACHE_NAME);
var cachedFiles = await cache.match(event.request);
if (cachedFiles) {
return cachedFiles;
} else {
try {
var response = await fetch(event.request);
await cache.put(event.request, response.clone());
return response;
} catch (e) {
console.log(" something when wrong!");
}
}
})()
);
}
});
Он получает запрос и проверяет, есть он уже в кеше или нет. Если это не так, кешируйте его. Это работает.
Но где я застрял:
- как я могу также сохранить css и js, которые также необходимы для страниц? Мне нужно найти способ получить все ссылки и l oop поверх них, получить их и сохранить?
- Я слышал о Google Workbox, также просмотрел документацию, но мне это просто непонятно, например как преобразовать мой текущий SW во что-то, что работает с рабочим ящиком, со всем файлом registerRoute при извлечении ...
- рабочий сервис будет захватывать выборки только при обновлении страницы. Клиенты.claim () должны исправить это, но на самом деле это не так ...
Если кто-то может мне с этим помочь, очень признателен!
спасибо,
Марио