gpt4 book ai didi

vue.js - 如何缓存其他路线以供离线浏览?

转载 作者:行者123 更新时间:2023-12-02 07:14:35 29 4
gpt4 key购买 nike

我正在设置一个支持离线浏览的渐进式网络应用程序。

我已经为我的主路由('domainsample.com/')设置了离线浏览,即使离线它也会响应 200。

但是当我导航到其他路由('domainsample.com/about')时,我收到No Internet Page 错误。

这是我在 Heroku 中部署的示例,URL:https://pwa-hehe.herokuapp.com

我使用 Vue CLI 3 设置项目,并使用 Node.js 和 Express.js 来运行服务器中的 dist 文件夹。

// server.js
const express = require('express')
const path = require('path')
const history = require('connect-history-api-fallback')

const app = express()

const staticFileMiddleware = express.static(path.join(__dirname + '/dist'))

app.use(staticFileMiddleware)

app.use(history({
disableDotRule: true,
verbose: true
}))

app.use(staticFileMiddleware)

app.get('/', function (req, res) {
res.render(path.join(__dirname + '/dist/'))
})

var server = app.listen(process.env.PORT || 3000, function () {
var port = server.address().port
console.log("App now running on port", port)
})
// manifest.json
{
"name": "pwa-offline",
"short_name": "pwa-offline",
"icons": [
{
"src": "./img/icons/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "./img/icons/android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png"
}
],
"start_url": "./index.html",
"display": "standalone",
"background_color": "#000000",
"theme_color": "#4DBA87"
}

// service-worker.js

/**
* Welcome to your Workbox-powered service worker!
*
* You'll need to register this file in your web app and you should
* disable HTTP caching for this file too.
*
*
* The rest of the code is auto-generated. Please don't update this file
* directly; instead, make changes to your Workbox build configuration
* and re-run your build process.
*
*/

importScripts("https://storage.googleapis.com/workbox-cdn/releases/3.6.3/workbox-sw.js");

importScripts(
"/precache-manifest.d3f1ce5d8331bddc555348f44cfba9d8.js"
);

workbox.core.setCacheNameDetails({prefix: "pwa-offline"});

/**
* The workboxSW.precacheAndRoute() method efficiently caches and responds to
* requests for URLs in the manifest.
*
*/
self.__precacheManifest = [].concat(self.__precacheManifest || []);
workbox.precaching.suppressWarnings();
workbox.precaching.precacheAndRoute(self.__precacheManifest, {});

最佳答案

有一个更简单的解决方案,不涉及使用 InjectManifest

只需将其添加到您的 vue.config.js 文件中即可:

pwa: {
workboxOptions: {
navigateFallback: 'index.html'
}
}

它会自动向您的 Service Worker 添加必要的代码:

workbox.routing.registerNavigationRoute(workbox.precaching.getCacheKeyForURL("index.html"));

我遇到了同样的问题,我在这里找到了解决方案:https://github.com/vuejs/vue-cli/issues/717#issuecomment-382079361

关于vue.js - 如何缓存其他路线以供离线浏览?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58198148/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com