Удаление строки запроса __WB_REVISION__ из URL-адресов, переданных WorkBox - PullRequest
1 голос
/ 03 октября 2019

Мне нужно полностью удалить __WB_REVISION__ строки запроса из URL-адресов, префиксированных рабочей коробкой.

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

Я уже пытался использовать более простой сервисный работник, но поскольку мы используем веб-пакет с разделенными порциями, мы наткнулись на очень много import() и window объектные проблемы, из-за которых работало рабочее окно.

Я уже пробовал выполнять предварительное кэширование вручную через workbox.precaching.precacheAndRoute(). Буду признателен за любые предложения.

конфигурация рабочей коробки (webpack.config.js):

        new WorkboxPlugin.InjectManifest({
            swSrc: "./assets/js/pwa/worker.js",
            swDest: "sw.js",
            precacheManifestFilename: "precache.[manifestHash].js",
            excludeChunks: ["main", "page", "login"]
             include: [
                 /(vendor).*\.js(?=\?|$|)/,
                 /\.(woff2)(?=\?|$|)/,
                 /(?=sprite)\.(svg)(?=\?|$|)/,
            ],
        })

worker.js:

const cacheableResponse = {
    statuses: [0, 200]
};
const offlinePage = "offline.html";
workbox.precaching.precacheAndRoute([offlinePage]);

workbox.routing.registerRoute(/\/$|(.html?)$/, new workbox.strategies.NetworkOnly());
workbox.routing.setCatchHandler(({ event }) => {
    return caches.match(offlinePage);
});

workbox.precaching.precacheAndRoute(self.__precacheManifest);

РЕДАКТИРОВАТЬ: Добавление кода нижеконфиг вебпака вроде бы решил, но вроде хаки

manifestTransforms: [
                originalManifest => {
                    return (manifest = originalManifest.forEach(entry => delete entry.revision));
                }
            ]

1 Ответ

0 голосов
/ 04 октября 2019

Правильный способ сделать это - использовать опцию dontCacheBustURLsMatching в конфигурации плагина. Требуется регулярное выражение, совпадающее с URL-адресами, которые будут переданы. Значение по умолчанию - null (ничего не соответствует), но вы можете настроить его так, чтобы оно соответствовало любым активам, которые вам нравятся. С этим вы можете сопоставить все ваши активы, которые уже включают в себя имя хэша содержимого файла. Другими словами, с помощью этой опции вы можете сказать, что «файлы, соответствующие этому регулярному выражению, не должны иметь информацию о ревизии в манифесте предварительного кэша».

Подробнее в документации здесь: https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin

...