如何将缓存 headers 添加到 Strapi API 端点

How to add cache headers to Strapi API endpoint

我想了解如何在 Strapi 中为特定(或任何)API 端点启用缓存。当浏览器在响应 headers 中访问我的端点时,我没有看到任何与缓存相关的 headers。有没有办法使用 etags 并有很长的缓存时间来允许 JSON 响应被缓存?

有人提到 etags in the docs 但我不确定如何实施。如果有人能提供更详细的信息,我们将不胜感激。

我建议你在 Strapi 之外管理这种事情。

使用其他服务。例如,如果您在 AWS 上托管应用程序,则可以使用 CloudFront。

至少对于静态文件,这可以在 Strapi 本身中完成。 middlewares documentation 表明,已经有一个名为 public 的中间件,它在提供来自 public/目录。

但是如果你想缓存上传的文件(即 public/uploads/ 目录中的文件),这还不够,因为中间件 strapi-provider-upload-local(尚未记录)首先运行。

最近 published package 解决了这个问题:

npm i strapi-middleware-upload-plugin-cache

通过添加或修改具有以下内容的 config/middleware.js 文件来激活它:

module.exports = ({ env }) => ({
  settings: {
    'upload-plugin-cache': {
      enabled: true,
      maxAge: 86400000
    }
  }
});