vue/cli-plugin-pwa:服务器请求(使用 axios)不被 service worker 缓存

Posted

技术标签:

【中文标题】vue/cli-plugin-pwa:服务器请求(使用 axios)不被 service worker 缓存【英文标题】:vue/cli-plugin-pwa: server requests (with axios) aren’t cached by the service worker 【发布时间】:2020-11-25 08:53:11 【问题描述】:

我没有成功尝试将 PWA 添加到项目中。 Service Worker 不会缓存服务器请求。请求地址不会添加到缓存存储中。因此,离线模式不起作用。

项目配置:

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

vue.config.js 中的 PWA 配置:

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],
                    ,
                ,
            ]
        
    
;

PS 还有这个:浏览器中的开发者控制台 -> 应用程序选项卡 -> 可安装性 -> “页面无法脱机工作”。服务工作者成功连接(请求缓存除外),清单被识别。为什么会显示这样的信息?

【问题讨论】:

vue.config.js 按预期工作,我无法重现该问题。您可以在 localhost 上提供 dist/ 文件夹,并在 devtool console 选项卡中检查工作箱日志,在 network 选项卡中检查网络信息。 【参考方案1】:

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

    Axios 在后面使用 XHR 请求not fetch 请求。 由于工作线程与主线程分开运行,服务工作线程独立于与其关联的应用程序,后果:synchronous XHR and localStorage cannot be used in a service worker

所以我猜你可能需要使用标准获取请求。

【讨论】:

以上是关于vue/cli-plugin-pwa:服务器请求(使用 axios)不被 service worker 缓存的主要内容,如果未能解决你的问题,请参考以下文章

如何将 PWA 添加到不是使用 Vue CLI 创建的 Vue.js 3 应用程序?

python——请求服务器(http请求和https请求)

Ajax向服务器发送请求和接收返回的信息

在ExpressJS中,怎么发送请求到别的服务器请求数据

http options请求

HTTP 400 - 错误请求