Vue.js nuxt.js-如何在服务器端缓存所有客户端的axios调用
我使用的是vue+nuxt.js应用程序,我想知道是否可以缓存所有客户端的axios webservice调用。我必须获得一些货币参考数据,而每个客户都必须调用这些数据,这并没有多大意义Vue.js nuxt.js-如何在服务器端缓存所有客户端的axios调用,vue.js,caching,axios,nuxt.js,Vue.js,Caching,Axios,Nuxt.js,我使用的是vue+nuxt.js应用程序,我想知道是否可以缓存所有客户端的axios webservice调用。我必须获得一些货币参考数据,而每个客户都必须调用这些数据,这并没有多大意义 有人能给我一些提示,甚至举个例子吗?Thx 这里是最新Nuxt 2.11的工作解决方案,使用本地定义的模块 首先将本地模块添加到nuxt.config.js modules: [ "@/modules/axCache", ... ] 然后 及 注意,这适用于服务器/客户端,并且可以配置为仅在一侧工作 解
有人能给我一些提示,甚至举个例子吗?Thx 这里是最新Nuxt 2.11的工作解决方案,使用本地定义的模块 首先将本地模块添加到nuxt.config.js
modules: [
"@/modules/axCache",
...
]
然后
及
注意,这适用于服务器/客户端,并且可以配置为仅在一侧工作
解决方案位于:以下是缓存整个页面的新解决方案 如果需要,甚至可以缓存一致的api菜单
npm i numxt完美缓存
// nuxt.config.js
modules: [
[
'nuxt-perfect-cache',
{
disable: false,
appendHost: true,
ignoreConnectionErrors:false, //it's better to be true in production
prefix: 'r-',
url: 'redis://127.0.0.1:6379',
getCacheData(route, context) {
if (route !== '/') {
return false
}
return { key: 'my-home-page', expire: 60 * 60 }//1hour
}
}
]
]
然后在redis中为所有客户端缓存api响应:
asyncData(ctx) {
return ctx.$cacheFetch({ key: 'myApiKey', expire: 60 * 2 }, () => {
console.log('my callback called*******')
return ctx.$axios.$get('https://jsonplaceholder.typicode.com/todos/1')
})
}
谢谢,如果在服务器模式下使用,这个缓存可以在客户端之间共享吗?还是每个客户端都会创建一个缓存?事实上,我发现了这一点,目前正在使用它。我还将axios与vuex结合使用,以将请求保持在最低限度。你添加了一个插件并安装了所需的依赖项,我不知道多个客户端共享同一个缓存是什么意思?你能解释一下吗?
// nuxt.config.js
modules: [
[
'nuxt-perfect-cache',
{
disable: false,
appendHost: true,
ignoreConnectionErrors:false, //it's better to be true in production
prefix: 'r-',
url: 'redis://127.0.0.1:6379',
getCacheData(route, context) {
if (route !== '/') {
return false
}
return { key: 'my-home-page', expire: 60 * 60 }//1hour
}
}
]
]
asyncData(ctx) {
return ctx.$cacheFetch({ key: 'myApiKey', expire: 60 * 2 }, () => {
console.log('my callback called*******')
return ctx.$axios.$get('https://jsonplaceholder.typicode.com/todos/1')
})
}