Исключение маршрута API из кеширования рабочих ящиков в проекте vue / express - PullRequest
0 голосов
/ 08 мая 2020

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. Но был бы признателен за информацию о том, как этого добиться, мне пока не удалось найти, как это настроить.

...