使用HTTP管理API资源缓存

时间:2016-08-23 10:13:18

标签: rest http caching api-design

我目前正在使用ASP MVC API开发SPA。我们最近在API响应中通过HTTP标头添加了客户端缓存,并根据预期的更改频率,使用适当的max-age值。

虽然这有助于提高性能,但我们现在遇到的问题是用户自己进行更改,然后在重新加载页面时使用旧数据获取缓存命中。

为了解决这个问题,我在GET请求中添加了一个版本参数,每次更改时都会递增。

但是,我现在发现RFC 7234 Sec 4.4表示POST,PUT或DELETE请求应该使同一URI的GET请求缓存无效。

鉴于此,我想知道如何更好地设计我的API,因此不需要版本参数,浏览器将自动处理这个问题。

例如:我有

  1. GET / resource - 返回所有资源的集合
  2. POST / resource - 创建新资源
  3. GET / resource / {id} - 获取id为
  4. 的资源
  5. PUT / resource / {id} - 更新指定了id的资源。
  6. 请求2将使1无效,4将使3无效,但4也应使1无效。

    这是正确的行为吗?或者应该请求1只返回所有资源的ID集合,我应该为每个ID单独请求3。这似乎没有效果,因为它可以解决100个请求而不是1个。

    有一个简单的解决方案吗?

0 个答案:

没有答案