rest - 制作良好的 REST API 请求缓存密钥的最佳实践是什么?
问题描述
我正在使用 Ruby on Rails 构建一个简单的 API 服务。在生产中,我想集成Redis/Memcached
以便使用基于键的缓存来缓存一些常用的端点。例如,我有一个带有name
和color
字段的 Car 表。
(eg. /cars
我的问题是,当资源具有各种可能以不同顺序出现的参数时,为特定端点定义缓存键的最佳方法是什么?例如。/cars?name=honda&color=white
, /cars?color=white&name=honda
.
如果我使用请求 url 作为缓存键,我将有 2 个不同的缓存记录,但从技术上讲,如果两者都name
具有color
相同的值,那么 Redis 数据库中应该只有一个缓存记录。
解决方案
按字母顺序排列参数并将其用作缓存键的基础。
/cars?name=honda&color=white
/cars?color=white&name=honda
在这两种情况下,缓存键都将基于串联的按字母顺序列出的参数
colorname
因此,上述两个重新排序的 url 都会产生相同的缓存键。
推荐阅读
- c# - .net核心多页表单不在会话中存储数据
- python - 升级到 Django 3.1.2
- swift - 核心数据的独特价值 swift
- python - 装饰器可以修改包装函数的函数签名中的类型提示吗?
- c++ - 尝试使用 malloc() 分配一个内部包含一个集合的结构来堆内存
- css - 使用 CSS 对齐字段
- java - Spring Data 中的验证抛出 ConstraintViolationException
- android - Android - 签名证书与上传证书
- git - 如何将一个分支的所有文件合并到另一个分支,但一个文件除外
- php - 找到没有打开 XAMPP 的文件 htdocs