javascript - REST API - 我了解响应缓存过程吗?(Node.js)
问题描述
我正在使用缓存响应对我的专业休息 api 进行编程。
我为这项任务选择了 NestJS 框架,我对我的推理是否正确有几个疑问。
我有 2 条路径:
1. /api/Pets | returns the logged-in user's pet lists
2. /api/Pets/categories | returns all available pet categories
我使用 redis 进行缓存,因为我希望共享缓存。这就是为什么我为第二个端点构建了一个 redisStore 并编写了这个 HttpCacheInterceptor:
import {
CACHE_KEY_METADATA,
CacheInterceptor,
ExecutionContext,
Injectable,
} from '@nestjs/common';
@Injectable()
export class HttpCacheInterceptor extends CacheInterceptor {
trackBy(context: ExecutionContext): string | undefined {
let cacheKey = this.reflector.get(CACHE_KEY_METADATA, context.getHandler());
if (cacheKey) {
const request = context.switchToHttp().getRequest();
if (Object.values(request.params).length) {
const params = Object.values(request.params)
.map((param) => '/' + param)
.toString();
cacheKey = cacheKey + params;
}
if (request._parsedUrl.query) {
return `${cacheKey}-${request._parsedUrl.query}`;
}
return cacheKey;
}
return super.trackBy(context);
}
}
但是我的第一个路由器总是向用户返回不同的响应,所以我无法将它存储在 redisStore 中。我将不得不使用内存缓存,但我不能在 DI 中声明两个缓存模块 - 那么我该如何处理呢?
解决方案
推荐阅读
- google-chrome - chrome https 代理不起作用,但 http 可以
- decision-model-notation - 如何验证 DMN camunda 中的多个规则输入
- oracle - oracle select sequence.nextval from dual 听起来太慢了
- mysql - 日期间隔 mysql 今天没有显示
- python - 如何清理熊猫数据框
- python - 如何在python中按字符串的顺序有效地识别子字符串
- android - 如何从父活动的片段访问视图?
- android - 在华为设备上设置默认 Android 启动器?
- google-maps - 谷歌地图:我如何才能获得谷歌评论的确切日期?
- c++ - 第一个函数中的无限循环不知道如何修复