如何缓存API axios响应

6g8kf2rb  于 2023-01-09  发布在  iOS
关注(0)|答案(1)|浏览(201)

下面是我的API代码:

import axios from 'axios';

export const getAreaData = async (postcode) => {
    const { data } = await axios.get(`https://api.zippopotam.us/GB/${postcode}`);
    return data.places;
};

这个API调用返回了一个对象数组。我需要把它存储在缓存中来提高性能,我该怎么做呢?
尝试https://www.npmjs.com/package/axios-cache-adapter youtube谷歌其他方法
我不能改变这个代码太多,我需要添加到它存储在缓存中的响应。

eh57zj3b

eh57zj3b1#

缓存本质上是数据的本地存储。假设它不是永久在线的(即它不是服务器),你可以在程序运行时的剩余时间里保存对查询的响应。从调用函数的代码的Angular 来看,理想情况下,它不应该知道或关心数据是否被缓存(这被称为具有透明缓存)。

import axios from 'axios';

// store data here
const areaDataCache = {};

export const getAreaData = async (postcode) => {
  // if cache doesn't contain data
  if (!areaDataCache[postcode]) {
    // load data and add it to cache
    const { data } = await axios.get(`https://api.zippopotam.us/GB/${postcode}`);
    areaDataCache[postcode] = data.places
  }
  // cached data
  return areaDataCache[postcode];
};

这是可能的最简单的实现,并且其中没有任何更高级的概念,例如设置数据的到期日期,这将强制在经过一段时间后再次获取数据,或者在一定长度的时间/一定数量的请求后清除整个缓存。

相关问题