我有使用create-react-app和service-worker生成的应用。
我检查了很多问题和文章,但仍然找不到可用的答案。
将urlBlockList之类的内容添加到create-react-app服务工作者的最佳实践是什么?
我认为react eject
不是最合适的解决方案
答案 0 :(得分:1)
已解决
我找到的最佳解决方案-使用https://github.com/liuderchi/sw-precache-cra 并将不需要的网址添加到自定义sw-config
示例:
// sw-config.js
module.exports = {
runtimeCaching: [
{
urlPattern: '/unwantedurl',
handler: 'networkFirst',
},
],
};
答案 1 :(得分:1)
这是适用于CRA 3的解决方案:
yarn add react-app-rewired --save-dev
react-scripts
的{{1}}部分的scripts
替换为package.json
react-app-rewired
的文件。在此文件中,您可以将条目添加到服务工作者配置。例如:config-overrides.js
上面的配置排除了服务人员中带有module.exports = function override(config, env) {
const swPrecacheConfig = config.plugins.find(
plugin => plugin.constructor.name === "GenerateSW"
);
// Prevent some URLs from being cached by the service worker
const blacklist = swPrecacheConfig.config.navigateFallbackBlacklist;
blacklist.push(/\/oauth2\/authorization\//);
blacklist.push(/\/login\/oauth2\//);
return config;
};
和/oauth2/authorization/
的网址。