【发布时间】:2019-02-05 23:39:05
【问题描述】:
我按照this 教程使用 ETags 实现缓存,但是带有查询的请求如何首先检查缓存?例如,假设您有一个端点 GET /Todos 可以获取 Todo 注释列表,然后您有一个 GET /Todos/{id} 可以获取特定 id 的 todo。如果我先获取所有待办事项,然后尝试为特定 id 获取一个,有没有办法检查该项目是否已经在缓存中(因为当你获取所有项目时它会被缓存)?
【问题讨论】:
我按照this 教程使用 ETags 实现缓存,但是带有查询的请求如何首先检查缓存?例如,假设您有一个端点 GET /Todos 可以获取 Todo 注释列表,然后您有一个 GET /Todos/{id} 可以获取特定 id 的 todo。如果我先获取所有待办事项,然后尝试为特定 id 获取一个,有没有办法检查该项目是否已经在缓存中(因为当你获取所有项目时它会被缓存)?
【问题讨论】:
在请求中使用CacheControl.FORCE_CACHE。如果您收到状态码为 503 的响应,则说明它不在缓存中。
【讨论】:
GET /Todos/{id} 在这种情况下会返回 503,因为该特定请求尚未发出,因此它没有被缓存,即使通过不同请求 (GET /Todos) 的相同数据已被缓存