0

我正在为 node.js 应用程序使用 Google App Engine 标准环境。

我有一个以public我的静态文件命名的文件夹。这包含文件,例如chunk-XIAWB55V.js. 我希望这些文件被大量缓存,因为如果内容发生变化,散列文件名会发生变化。

我在我的文件夹中添加了一个静态文件处理程序,app.yaml以将请求重定向/static到我的public文件夹,并通过检查日志确认它有效:对例如https://<redacted>.com/static/javascript/build/prod/chunk-Z4M5HAC7.js的请求在请求日志中并且没有命中我的应用程序。文档暗示应应用 10 分钟的默认缓存。但是,浏览器开发工具显示实际的标头是,并且每次都发送cache-control: no-cache, must-revalidate一个请求(得到 a )。304

我曾尝试向expiration我添加一个参数,app.yaml但它没有任何区别。我也尝试设置标题,app.yaml但没有任何区别。我当前的文件如下所示:

handlers:
  - url: /static
    static_dir: public
    secure: always
    expiration: "1d"
    http_headers:
      Cache-Control: public
      Vary: Accept-Encoding

  - url: /.*
    secure: always
    script: auto

我仍然收到如下回复:

在此处输入图像描述

我在 App Engine 前面使用 Identity Aware Proxy,我从例如这个问题中知道 IAP 和缓存可能混合得不好,但这似乎只是指可能的 IAP 绕过。我的静态文件不敏感,我很乐意接受这种风险。

4

2 回答 2

1

由于使用 IAP,GCP 支持建议这是一个边缘情况。在这种情况下,我可以向其他任何人推荐我已经实施的解决方法是删除静态路由并从您的应用程序中提供文件。虽然这会增加应用程序的负载,但较高的最大年龄意味着不会经常请求它们。

于 2021-11-19T10:24:07.103 回答
0

在以下位置有一些文档:此页面描述了使用身份识别代理 (IAP) 的最佳实践https://cloud.google.com/iap/docs/concepts-best-practices -- TL;DR,App Engine 做了一些缓存与 IAP 交互不佳的 static_files。如果您想保护您的 static_files,该页面有一些说明可以应用。

于 2021-11-16T18:28:09.320 回答