当前位置: 首页 > 知识库问答 >
问题:

vue/cli-plugin-pwa:服务器请求(带axios)不被服务工作人员缓存

终彬郁
2023-03-14

我试图将PWA添加到项目中,但未成功。服务工作者不会缓存服务器请求。请求地址未添加到缓存存储中。因此,脱机模式不起作用。

项目配置:

  • vue水疗中心
  • 使用axios库向服务器发出的请求
  • 服务器响应不包含缓存控制标头
  • pwa是使用标准vue插件实现的:vue/cli插件pwa

vue中的PWA配置。配置。js:

module.exports = {
    publicPath: '/',
    pwa: {
        name: 'Old Vehicles',
        manifestOptions: {
            name: "Old Vehicles",
            display: "standalone",
            scope: "/",
            start_url: "/"
        },
        workboxPluginMode: 'GenerateSW',
        workboxOptions: {
            navigateFallback: '/index.html',
            runtimeCaching: [{
                urlPattern: new RegExp('^http'),
                handler: 'NetworkFirst',
                options: {
                    networkTimeoutSeconds: 2,
                    cacheName: 'api-cache',
                    cacheableResponse: {
                        statuses: [0, 200],
                    },
                },
            }]
        }
    }
};

还有这个:浏览器中的开发者控制台-

共有1个答案

冯霖
2023-03-14

我目前也在学习PWA。关于这个问题,我读到的是:

  1. Axios在后面使用XHR请求,而不是获取请求。
  2. 因为辅助角色与主线程分开运行,所以服务辅助角色独立于它们关联的应用程序,结果是:同步XHR和localstore不能在服务辅助角色中使用

所以我想您可能需要使用标准的获取请求。

 类似资料:
  • 我有一个VueCLI前端应用程序运行在http://localhost:8080 在开发模式中。我试图调用由提供的api服务http://localhost:36856,因此会出现CORS问题。然后,我在vue中设置代理服务器配置。配置。但是它不起作用。下面是一些代码。。。 我在A中创建了一个带有自定义配置的axios新实例pi.js 这是一个我如何构建api服务的例子,它可以被调用

  • 在Chrome中,我的react service worker(使用CRA创建)被永久缓存并服务于旧版本。硬重新加载不会改变任何东西。如果我在开发工具中手动选择bypass for network来修复问题,但显然这不是一个适用于客户端的解决方案。我们的应用程序由Apache提供。基本上,我想知道在这种情况下指定

  • 我试图用一个服务人员使用Workbox制作一个非常基本的PWA,但是我有一个问题。我正在使用命令行界面来生成服务工作人员,一切正常,完美的亮点,但我不能将我的index.html添加到运行时缓存中。我必须将其添加到全局模式,以便我的网站在离线模式下工作,但当我更新index.html文件时,除非我清除缓存,否则不会更新。我想要和我的js和css一样的东西。当我升级这些文件时,它们会更新。这是我的工

  • 我创建了react应用程序,它使用股票服务人员缓存文件。我希望该应用程序是一个可下载的PWA,但每当我更新(与heroku) 我是否错过了文档中的一些配置,以便在其为PWA时启用自动更新?或者我可以做些什么来在更新时强制刷新。(我读过这是一个糟糕的UI,但我对此没有意见) 注意:从PC上的浏览器查看时,它会按预期工作。(选项卡全部关闭时更新)

  • 我很难让我的angular5服务人员工作。我有两个主要问题: 服务工作者不缓存用作背景图像的资产图像 在模拟网络断开连接后,服务工作人员最初从缓存中提取文件(除了前面提到的非缓存文件),但在第二次刷新后,它会遇到错误。 下面是我的问题的更详细的报告。您可以通过克隆我所做的回购来强调这个问题。 我创建了带有--service-Worker标记的应用程序。然后我确保了Angular留档中列出的5个步骤

  • 我正在使用“缓存”将我的PWA资产缓存到service worker中,并使其脱机可用。 当我改变一个资产,特别是一个js文件,我修改至少一个字节在我的服务工作人员触发其本机更新:服务工作人员更新和检索所有以前缓存的资产,以刷新其缓存。 然而,服务器以文件的缓存版本响应,尽管我拥有所服务的文件,但我无法控制缓存控制http头。 如何防止在服务工作者缓存的资源上进行浏览器缓存?使用 后缀将不起作用,