我应该在每个应用程序中还是在 api 网关中管理我的缓存控件 headers?

Should I manage my cache control headers in each app or in the api gateway?

这是一个 design/architecture 最佳实践问题。

有人要求我在 API 网关前放置一个 CDN。我对 CDN 很陌生。

在响应中提供缓存指令并指示 CDN 进行缓存。

从我的角度来看,我有两个选择。

  1. 我的 api 网关支持 header 注入策略。开发人员根据他们对 api 工作方式的了解,通过配置在此处添加缓存控制策略。

  2. 要求网关后面的每个应用程序实现添加他们的缓存控制headers。

我正在寻找有关如何根据上述选项最好地实现这些要求的意见。

我最初的想法是缓存控制可能最好通过配置在网关上进行管理。即在 CD 过程中,开发人员根据他们对 api 工作方式的了解来配置要部署的 api 策略配置文件。

谢谢

我的建议是遵循你已经在学习的东西,所以让 API 开发人员在 API 网关上配置缓存控制策略,因为他们现在可能最好的后端是什么样的以及哪些信息需要和不需要缓存。

我还要补充一点,对于 3scale,API 网关本身将很快包含一些缓存功能 (https://github.com/3scale/APIcast/tree/master/gateway/src/apicast/policy/content_caching),但如果流量很大,您可能仍想采用 CDN 缓存功能没有在地理上路由到几个分布式网关。