0

总的来说,我对标头、缓存和卷曲有一个非常初步的理解,更不用说 Cloudfront/S3 以及它们在做什么了——所以,抱歉,如果这最终没有任何意义。

目前,我们有一个带有 originResponse 的 Lambda Edge 脚本,用于设置缓存控制 max-age 值。它使用带有内容类型案例的开关来分配不同的值,如果所有案例都未命中,则默认为默认值。

当我尝试curl -I内容时,它会返回预期的最大年龄,但使用curl -I --compressed或仅从浏览器中检查会显示所有设置为开关的默认值。

我想我知道它与压缩有关,但就我而言,我完全不知道如何解决这个问题。

请求标头具有accept-encoding: gzip, ...,但没有内容具有响应标头content-encoding: gzip。我不知道 Cloudfront 是否会在合适的情况下自动设置该标头本身——如果是这样,内容是否仍可以以 gzip 以外的其他格式“压缩”?缺少content-encoding标题会导致奇怪吗?这甚至与我的问题有关吗?

现在,我想再次为这个问题的意义不大表示歉意,该网站的工作方式有几个层次,而且我不确定在我自己的困惑之上与 NDA 的界限在哪里。

标题真的是我的问题简短。我试图弄清楚如何让 curl 调用--compressedshow 与没有相同的 max-age 。

编辑:目前还有一个 S3(?) 将 MIME 内容类型分配给binary/octet-stream我正在处理的 .woff2 字体之类的问题。我不知道这些问题有多相关,以及是否可能重新分配类型或对象重组(如果这是一件事?)导致切换失败。但是就是说,原始问题中的内容类型显示了预期的内容,所以我不知道为什么它会达到默认值。

if (headers['content-type'] && undefined === headers['cache-control']) {
switch (headers['content-type'][0].value) {
  case 'image/jpg':
    setHeader('Cache-Control', 'public, max-age=2592000') // ← "curl -I" shows this
    break
  ...
  default:
    setHeader('Cache-Control', 'public, max-age=3600') // ← "curl -I --compressed" shows this
    break

编辑 2:我最初在reddit上发布了这个问题,以便在评论中提供更多背景信息。

4

0 回答 0