Learning workbox с использованием vue pwa, и я создаю пример приложения, которое, кажется, ведет себя так, как ожидалось, за исключением одной проблемы.
У меня есть маршрут для внутренней конечной точки express REST API, расположенной в / api / книги. Если я запускаю онлайн в браузере и нажимаю Ctrl + F5, я получаю ожидаемые данные. Но как только сработает кеш или я go отключен, я буду отображать index. html вместо этого.
Я предполагаю, что мне нужно исключить этот маршрут в моей конфигурации сервис-воркера, но я не нашел, как для этого.
Мой сервисный работник. js
if (workbox) {
workbox.setConfig({
debug: true
});
workbox.core.setCacheNameDetails({
prefix: "sample-proj"
});
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});
workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("index.html"));
// Cache images:
workbox.routing.registerRoute(
workbox.routing.registerRoute(
/\.(?:png|gif|jpg|jpeg|svg)$/,
new workbox.strategies.StaleWhileRevalidate({
cacheName: 'images',
plugins: [
new workbox.expiration.Plugin({
maxEntries: 60,
maxAgeSeconds: 30 * 24 * 60 * 60, // 30 Days
}),
],
}),
));
}
Express конфигурация
const express = require("express");
const serveStatic = require("serve-static");
const app = express();
const rootFolder = __dirname + "/../dist";
const port = process.env.PORT || 5000;
app.use(serveStatic(rootFolder));
app.get("/api/books", (req, res) => {
res.json({
books: [{
author: "Some Author",
title: "Some title",
datePublished: "2018-08-01"
}, ],
});
});
app.get("/*", (req, res) => {
res.sendFile(rootFolder + "/index.html");
});
app.listen(port);
console.log("server listening on port " + port);
Как сказано выше, я предполагаю, что мне нужно добавить некоторую форму исключения маршрута для маршрута / api. Но был бы признателен за информацию о том, как этого добиться, мне пока не удалось найти, как это настроить.