Workbox - использование собственного обработчика - PullRequest
0 голосов
/ 05 декабря 2018

Я хотел бы иметь массив для настройки части пути (для кэширования ответа, когда он совпадает с запрошенным URL-адресом) и срока действия (для истечения срока действия кэша через X секунд), но я не могу сделать обработчик ''для правильной работы.

Это массив для настройки пути и срока действия:

const PATHS_TO_CACHE = [
    { url: 'api/v1/destination', expiration: THIRTY_DAYS },
    { url: 'api/v1/hotel', expiration: THIRTY_MINUTES },
];

Это метод для кэширования, который вызывает cachePath для сопоставления и pathHandler для обработки:

function cachePaths() {
    workbox.routing.registerRoute(cachePath, pathHandler);
}

Метод сопоставления:

function cachePath({ url, event }) {
    const match = PATHS_TO_CACHE.find(function(path) {
        return url.href.includes(path.url);
    });

    return match || false;
}

И метод обработчика:

function pathHandler({ url, event, params }) {
    return workbox.strategies.staleWhileRevalidate({
        cacheName: 'url-cache',
        plugins: [
            new workbox.cacheableResponse.Plugin({
                statuses: [0, 200],
            }),
            new workbox.expiration.Plugin({
                maxAgeSeconds: params.expiration,
            }),
        ],
    });
}

Ну, pathHandler не работает и несколько попыток привеломеня к разочарованию ... выдает ошибки, где мне нужно return new Response(something) (сделал это с url и event), неправильные запросы на получение и неправильные ответы объекта.

Итак, как мне построить pathHandler способ кешировать ответ на Х секунд и все же получить правильный ответ?

Заранее спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Вы слегка неправильно используете API.

workbox.strategies.staleWhileRevalidate({...}) <- Returns a Route

К сожалению, документы здесь не ясны по этому поводу: https://developers.google.com/web/tools/workbox/reference-docs/latest/workbox.strategies

Что вы хотитесделать изложено здесь: https://developers.google.com/web/tools/workbox/modules/workbox-strategies#advanced_usage

function pathHandler({ url, event, params }) {
    const staleWhileRevalidate = new workbox.strategies.StaleWhileRevalidate({
        plugins:[...],
    });
    return staleWhileRevalidate.handle({event});
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...