🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

axios-cache-data

Package Overview
Dependencies
Maintainers
1
Versions
57
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

axios-cache-data

自定义缓存数据,接口数据不会经常变化,请求本地化缓存减少服务器压力

Source
npmnpm
Version
1.20.5
Version published
Weekly downloads
62
51.22%
Maintainers
1
Weekly downloads
 
Created
Source

axios-cache-data

axios-data axios vite

axios官方文档在这 axios

Tip:被缓存后所有的响应信息都是初次请求状态,服务器删除该数据或者修改该数据都不会有感知 ,可以设置缓存时间

Tip:代理 axios 对象 实现缓存 Tip: 取消 axios adapter 的实现方式

1. 创建缓存实例

import { http } from "axios-cache-data";

const axiosInstance = http.proxy(/*你的axios对象*/,/*配置*/)/*返回一个被代理axios的实例*/
const axiosInstance =  http(/*全局配置*/)/*返回一个被代理axios的实例*/
//...

2. 强制更新或使用缓存

import { http } from "axios-cache-data";

const axiosInstance = http.proxy(/*你的axios对象*/,/*配置*/)/*返回一个被代理axios的实例*/
const axiosInstance = http(/*全局配置*/)/*返回一个被代理axios的实例*/
axiosInstance.post(url, {}, { force: true }); //缓存会失效 并且删除缓存 重新走网络请求
axiosInstance.post(url, {}, { hit: true }); //在没有全局开启缓存这个会开启缓存
axiosInstance.clear()//
// 或使用
const instance = axios.withCache(options); //使用代理对象时会代理clear属性
instance.clear();

2.1. 序列化数据

import axios from "axios";
import { http } from "axios-cache-data";

http({
	message: {
		/*配置自己的序列化反序列化 注: 两个都要同时实现,保持 序列化和反序列化的一致性*/
	}
});

3. 参数说明

export interface CacheInstance extends AxiosRequestConfig {
	/**
	 * @default 1000*60*60
	 */
	readonly maxAge?: number;
	readonly key?: string;
	//存储缓存 {window.sessionStorage| localStorage | 自实现的Storage}

	readonly storage?: Storage;

    readonly proxy?: Method[];

	readonly enableCache?: boolean;

	/**
	 * 公共的key前缀 生成key需要获取到 因为可以根据prefix删除和网络请求有关的请求
	 */
	readonly prefix?: string;

	/**
	 * 消息转换
	 * 可以在里面配置 敏感信息加密
	 */
	readonly message?: {
		serialization: Serialization; deserialization: Deserialization;
	};

	/**
	 * 验证返回值是否合法 排除错误信息 被保存到了缓存里,导致脏数据
	 * @param {AxiosResponse} response
	 * @return {boolean}
	 */
	valid?(response: AxiosResponse): boolean;

	// 生成一次请求唯一次的key 需要保持一个请求在一个请求参数下保持唯一
	generateKey?(key: string | undefined, url: string | undefined, method: any, header: any, params: string,
	             data: string): string;
}

axiosInstance.get(url, {
	hit: true,//开启缓存
	force: true, //强制更新 优先级高于hit
	expire: number, //设置缓存时间 优先级高于 base maxAge
	valid(res): boolean
	...
})

3.1. 创建适配器的公共参数

参数介绍默认值
maxAge缓存最大时间1000 _ 60 _ 60 (单位毫秒)
key生成 key 标识HTTP_CACHE_CACHE
storage缓存组件window.sessionStorage
prefix网络缓 key 存前缀AXIOS-CACHE
enableCache开启全局缓存false
generateKey生成一个请求唯一标识 key
message消息序列化和反序列化
valid验证消息是否正确防止消息错误却被缓存
proxy指定缓存方法request get post delete...["get","post"]

3.2. 每一个请求缓存参数

hit是否需要命中缓存(优先级高于全局配置)
force强制走网络请求,并刷新缓存(如果开启了缓存的)
expire过期时间
valid验证消息是否正确防止消息错误却被缓存

hit false 全局开启缓存也不会命中缓存

4. 执行流程图

Keywords

axios

FAQs

Package last updated on 02 Mar 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts