javascript - 为上传到 AWS S3 的图像设置 Expires 和 Cache-Control header

标签 javascript node.js amazon-web-services amazon-s3

我正在使用一个名为 node-s3-client 的 npm 包,它是 Node.js 的 aws-sdk 的高级包装器,用于上传一个本地项目目录到 S3 存储桶。

使用该包,我将一些元数据传递到我的文件,即 ExpiresCache-Control 的键值对。我正在上传一个包含 HTML、JS、CSS、JPEG 文件的整个目录。但是,当我检查我的 S3 存储桶时,我设置的 header 仅适用于 JS 和 CSS 文件,这些 header 不适用于图像。

我已经浏览了包和 aws-sdk 的文档,但我似乎无法找到导致选择性地将我的元数据应用于某些文件而不应用于其他文件的问题的原因。

这是我的配置对象:

const s3 = require('node-s3-client')

const s3Config= {
    localDir: './dist',
    deleteRemoved: false,
    s3Params: {
        Bucket: 'cdn',
        Prefix: 'dist/',
        Metadata: {
            'Cache-Control': 'max-age=31536000',
            'Expires': oneYearLater(new Date())
        }
    }
}

const client = s3.createClient({
    s3Options: {
        accessKeyId: KEY_ID,
        secretAccessKey: ACCESS_KEY,
        signatureVersion: 'v4',
        region: 'us-east-2',
        s3DisableBodySigning: true
    }
})

client.uploadDir(s3Config)

可能是什么导致了这个问题?

最佳答案

我认为您对如何设置要上传的对象的参数有疑问。尝试:

const s3Config= {
    localDir: './dist',
    deleteRemoved: false,
    s3Params: {
        Bucket: 'cdn',
        Prefix: 'dist/',
        CacheControl: 'max-age=31536000',
        Expires: oneYearLater(new Date())
    }
}

关于javascript - 为上传到 AWS S3 的图像设置 Expires 和 Cache-Control header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45845066/

相关文章:

node.js - 以详细模式启动 ChromeDriver - Node/JS

amazon-web-services - AWS SAM : How to retrieve implicitly created resources information

mysql - 如果未添加限制,查询不会结束 - AWS RDS MariaDB

javascript - React - 使用 eval() 确定 var 是否存在

javascript - 删除 JavaScript 中的事件监听器

node.js - 是否可以验证和签署 Node.js "native"中的数据(不使用对 OpenSSL 的外部调用)?

amazon-web-services - AWS lambda 丢失了一些 SQS 事件,导致消息丢失

javascript - 想要打印一 strip 有从数组中检索到的 ID 的消息

javascript - HASHTAG HARDSHIPS - 如何在 URL 中不放置 hashtag 的情况下打开菜单下拉列表?

node.js - Apache Cordova 工具与 Visual Studio 2015 社区版