1.1.0 • Published 4 years ago

request-dev-cache v1.1.0

Weekly downloads
-
License
ISC
Repository
-
Last release
4 years ago

Intro

本地缓存 fetch 请求的结果,基于你自己定义的生成 key 的策略(默认是使用 url + stringify(body))来把结果保存到本地存储中,在接口请求比较缓慢的时候提效非常明显。

使用 localforage 这个库作为底层的存储,它默认采用 IndexedDB 进行本地存储。

Install

npm install request-dev-cache -S
npm install localforage -S

Usage

Options

interface CacheFetchOptions {
  /**
   * 生成缓存key的策略,默认策略是直接拼接 url + stringify(body)
   */
  generateKey?: (url: RequestInfo, body: object) => string;
  /**
   * 传入 url 和 fetch 选项 判断是否需要缓存
   */
  shouldHandleRequest?(url: RequestInfo, requestInit?: RequestInit): boolean;
  /**
   * 传入 response 响应对象 判断是否需要缓存
   */
  shouldCacheResult?(response: Response): Promise<boolean>;
}
import { startCache } from 'request-cache';
import { omit } from 'lodash'

startCache({
  generateKey(url, body) {
    // 可以排除掉一些你不想缓存的参数值
    return `${url}-${JSON.stringify(omit(body, ['key1', 'key2']))}`;
  },
  shouldHandleRequest(url: string) {
    // 可以规定 /api 开头的请求才缓存
    return url.startsWith('/api');
  },
  shouldCacheResult: async response => {
    // 过滤掉不想缓存的结果
    const result = await response.json();
    return (
      response.headers.get('content-type') === 'application/json' &&
      response.status === 200 &&
    );
  },
});

Run tests

npm run test

Author

👤 ssh

Show your support

Give a ⭐️ if this project helped you!


This README was generated with ❤️ by readme-md-generator