Vue.js使用axios缓存http请求

H. *_* K. 9 vue.js axios

我正在用Vue.js开发一个PWA.当用户启动它时,需要来自另一个应用程序的一些信息.为此,我正在使用axios:

let url = 'url';
axios.get(url).then((response) => {
  callback(response.data)
})
Run Code Online (Sandbox Code Playgroud)

只要用户在线,它就能正常工作.如果网络连接正常,则应通过URL检索数据,如果没有Internet连接,则应从缓存加载数据.这怎么可能?

03b*_*gun 11

您可以查看此扩展https://github.com/kuitos/axios-extensions

这是基本的用法示例,希望对您有所帮助

import axios from 'axios';
import { cacheAdapterEnhancer } from 'axios-extensions';

const http = axios.create({
    baseURL: '/',
    headers: { 'Cache-Control': 'no-cache' },
    // cache will be enabled by default
    adapter: cacheAdapterEnhancer(axios.defaults.adapter)
});

http.get('/users'); // make real http request
http.get('/users'); // use the response from the cache of previous request, without real http request made
http.get('/users', { cache: false }); // disable cache manually and the the real http request invoked
Run Code Online (Sandbox Code Playgroud)

  • -1此适配器库将忽略来自数据提供者的所有缓存指令,并使用使用者方配置(默认为5分钟)进行缓存。如果您可以控制源数据/服务,请使用正确的HTTP缓存指令。尤其是由于OP提到了PWA,因此服务工作者在这里是一个更好的解决方案,因为他们是为解决这一确切问题而设计的。 (2认同)
  • @Phil,如果您想用一些简单的软件设置指针来扩展它,这将是一个很好的答案。我们正在处理类似的问题,通过 axios 从 CDN 获取设计资源,并希望浏览器像典型图像一样缓存它们等 (2认同)